在Netbeans中,我使用GUI Builder将JTable插入到我的应用程序中.
到目前为止,我只有一个类(CustomerDB):
package CustomerDB;
import [...];
public class CustomerDB extends javax.swing.JFrame {
CellEditorListener ChangeNotification = new CellEditorListener() {
public void editingCanceled(ChangeEvent e) {
System.out.println("The user canceled editing.");
}
public void editingStopped(ChangeEvent e) {
System.out.println("The user stopped editing successfully.");
}
};
public CustomerDB() {
customerTable = new javax.swing.JTable();
customerTable.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, …Run Code Online (Sandbox Code Playgroud) 所以我知道这是一个很受欢迎的问题,已经找到了解决方案.但是,当我尝试这个时,它无法正常工作.
我的JTextField为空,并且未启用该按钮.当我在文本字段中写东西时,按钮不会启用.
所以我的程序应该每秒检查一次该字段是否为空.只要有人在文本字段中写入内容,就应该启用该按钮.^^
loginbt = new JButton("Login");
loginbt.addActionListener(new loginHandler());
add(loginbt);
if(name.getText().equals("")) {
loginbt.setEnabled(false);
}else {
loginbt.setEnabled(true);
}
Run Code Online (Sandbox Code Playgroud) 我通过使用Executor玩SwingWorker的多线程,我在那里错误地从Vector中识别出错误的元素,看起来像这个代码相当忽略了Vector中的元素不存在
我的问题 - >如何/有可能以某种方式捕获此异常
简单的输出
run:
Thread Status with Name :StartShedule, SwingWorker Status is STARTED
Thread Status with Name :StartShedule, SwingWorker Status is DONE
Thread Status with Name :StartShedule, SwingWorker Status is STARTED
Thread Status with Name :StartShedule, SwingWorker Status is DONE
Thread Status with Name :StartShedule, SwingWorker Status is STARTED
Thread Status with Name :StartShedule, SwingWorker Status is DONE
BUILD SUCCESSFUL (total time: 11 seconds)
Run Code Online (Sandbox Code Playgroud)
通过取消注释
//changeTableValues1(); // un-comment for get ArrayIndexOutOfBoundsException
Run Code Online (Sandbox Code Playgroud)
一切都正确,我得到ArrayIndexOutOfBoundsException并输出
run:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: …Run Code Online (Sandbox Code Playgroud) 我有一个Java应用程序,显示数据库中的列表.在类的内部是以下代码,用于打开数据输入的新对话框:
@Action
public void addNewEntry() {
JFrame mainFrame = ADLog2App.getApplication().getMainFrame();
addNewDialog = new AddNewView(mainFrame, true);
addNewDialog.setLocationRelativeTo(mainFrame);
addNewDialog.addContainerListener(null);
ADLog2App.getApplication().show(addNewDialog);
}
Run Code Online (Sandbox Code Playgroud)
如何向主类添加侦听器以检测addNewDialog窗口何时关闭,以便我可以调用刷新方法并从数据库中刷新列表.
我试图在我的应用程序上以红色阴影绘制一个矩形,但我需要使它变得透明,以便它下面的组件仍然显示.但是我仍然想要一些颜色仍然会显示.我正在绘制的方法如下:
protected void paintComponent(Graphics g) {
if (point != null) {
int value = this.chooseColour(); // used to return how bright the red is needed
if(value !=0){
Color myColour = new Color(255, value,value );
g.setColor(myColour);
g.fillRect(point.x, point.y, this.width, this.height);
}
else{
Color myColour = new Color(value, 0,0 );
g.setColor(myColour);
g.fillRect(point.x, point.y, this.width, this.height);
}
}
}
Run Code Online (Sandbox Code Playgroud)
有谁知道我怎么能让红色阴影有点透明?我不需要它完全透明.
我想删除DefaultTable的所有行.我发现了两种在Internet上删除它们的常用方法,但在我的情况下它们都不起作用,因为我的DefaultTableModel中不存在这些方法.我想知道为什么:S.我使用DefaultTableModel的代码是
DefaultTableModel Table =(DefaultTableModel)Table.getModel();
删除的一种方法是
Table.removeRow(Table.getRowCount() - 1);
但是这个removerow方法在我的DefaultTableModel中不存在.
请帮帮我.
我有以下代码.它保存文件但内容为空.它出什么问题了?
public void saveMap() {
String sb = "TEST CONTENT";
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new File("/home/me/Documents"));
int retrival = chooser.showSaveDialog(null);
if (retrival == JFileChooser.APPROVE_OPTION) {
try {
FileWriter fw = new FileWriter(chooser.getSelectedFile()+".txt");
fw.write(sb.toString());
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud) 如果你在Swing中打开一个对话框,比如一个JFileChooser,它就像这个伪代码:
swing event thread {
create dialog
add listener to dialog close event {
returnValue = somethingFromDialog
}
show dialog
(wait until it is closed)
return returnValue
}
我的问题是:这怎么可能有效?如您所见,线程等待返回,直到对话框关闭.这意味着Swing事件线程被阻止.然而,人们可以与对话框进行交互,AFAIK需要该对话框才能运行.
那怎么办?
不幸的是,看起来这个最近封闭的问题还不太清楚.这是典型的输出:
run:
Trying to Remove JDialog
Remove Cycle Done :-)
Checking if still exists any of TopLayoutContainers
JFrame
JDialog
Will Try Remove Dialog again, CycleNo. 1
-----------------------------------------------------------
Trying to Remove JDialog
Remove Cycle Done :-)
Checking if still exists any of TopLayoutContainers
JFrame
JDialog
Will Try Remove Dialog again, CycleNo. 2
-----------------------------------------------------------
Trying to Remove JDialog
Remove Cycle Done :-)
Checking if still exists any of TopLayoutContainers
JFrame
JDialog
Will Try Remove Dialog again, CycleNo. 3
-----------------------------------------------------------
Trying …Run Code Online (Sandbox Code Playgroud) 我之前有一个JLabel,我想点击它.我发现这样做最简单的方法是使它成为JButton并使用以下代码.它现在看起来像一个JLabel
button.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));
button.setBorderPainted(false);
button.setContentAreaFilled(false);
button.setFocusPainted(false);
Run Code Online (Sandbox Code Playgroud)
这正是我想要的,除了文本现在在中间对齐.现在从我能够阅读其他问题和搜索.这应该工作
button.setHorizontalTextPosition( SwingConstants.LEFT );
Run Code Online (Sandbox Code Playgroud)
然而,文本仍然在按钮中间对齐.我有什么想法可以改变这个?
java ×10
swing ×10
jdialog ×3
jbutton ×2
jfilechooser ×2
jtable ×2
alignment ×1
colors ×1
events ×1
file-io ×1
jtextfield ×1
runtime ×1
swingworker ×1
translucency ×1
vector ×1