我正在编写java桌面应用程序.我有一些textareas来从用户那里获取数据.A JButton,它接受输入和处理.并且a JTable填充处理的数据.
这是我从main调用的构造函数.
public ChangeButtonLabel()
{
JFrame f=new JFrame();
f.setLayout(null);
JLabel lab1=new JLabel("Name");
JLabel lab2=new JLabel("Age");
//table=new JTable(model);
text1=new JTextField(20);
text2=new JTextField(20);
button=new JButton("OK");
lab1.setBounds(10,10,100,20);
text1.setBounds(120,10,100,20);
lab2.setBounds(10,40,100,20);
text2.setBounds(120,40,100,20);
Table=new ArrayList();
Table.add(new ArrayList());
((ArrayList)Table.get(0)).add("\nProgram Name ");
((ArrayList)Table.get(0)).add("Count ");
((ArrayList)Table.get(0)).add("Elapsed Time ");
((ArrayList)Table.get(0)).add("Average ET\n");
button.setBounds(120, 100, 100, 20);
button.addActionListener(new MyAction());
Object[][] data = {
{"Program Name","count","ET","Avg ET"}
};
model = new DefaultTableModel(data,columnNames);
dataTable = new JTable(model);
dataTable.setPreferredScrollableViewportSize(new Dimension(500, 70));
dataTable.setFillsViewportHeight(true);
dataTable.setBounds(220,130,300,200);
f.add(lab1);
f.add(text1);
f.add(lab2);
f.add(text2);
f.add(dataTable);
f.add(button);
f.setVisible(true);
f.setSize(300,350);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Run Code Online (Sandbox Code Playgroud)
在事件上我试图通过删除其以前的值来更新整个jtable.这是代码
model = new DefaultTableModel(data,columnNames);
dataTable.repaint();
dataTable=new JTable(model);
dataTable.setPreferredScrollableViewportSize(new Dimension(500, 70));
dataTable.setFillsViewportHeight(true);
dataTable.setBounds(220,130,300,200);
model.fireTableDataChanged();
Run Code Online (Sandbox Code Playgroud)
数据是2d数组,列名是列.
但我没有JTable得到更新.
在我做错的地方,请给我一些指导.
您不想创建新的JTable,因为它对当前显示的JTable没有影响.相反,您希望调用setModel(...)当前的JTable并传入新的表模型.
此外,请处理您的代码格式,因为它是生硬的,它很臭.既然你要求志愿者付出努力来帮助你,我认为你没有太多要求你付出类似的努力来使你的代码难以阅读.
举个例子,检查哪个更易于阅读,上面的代码或此代码:
public class ChangeButtonLabel {
private JTextField text1;
private JButton button;
private ArrayList Table;
private JTextField text2;
private Object[] columnNames;
private DefaultTableModel model;
private JTable dataTable;
public ChangeButtonLabel() {
JFrame f = new JFrame();
f.setLayout(null);
JLabel lab1 = new JLabel("Name");
JLabel lab2 = new JLabel("Age");
// table=new JTable(model);
text1 = new JTextField(20);
text2 = new JTextField(20);
button = new JButton("OK");
lab1.setBounds(10, 10, 100, 20);
text1.setBounds(120, 10, 100, 20);
lab2.setBounds(10, 40, 100, 20);
text2.setBounds(120, 40, 100, 20);
Table = new ArrayList();
Table.add(new ArrayList());
((ArrayList) Table.get(0)).add("\nProgram Name ");
((ArrayList) Table.get(0)).add("Count ");
((ArrayList) Table.get(0)).add("Elapsed Time ");
((ArrayList) Table.get(0)).add("Average ET\n");
button.setBounds(120, 100, 100, 20);
button.addActionListener(new MyAction());
Object[][] data = { { "Program Name", "count", "ET", "Avg ET" } };
model = new DefaultTableModel(data, columnNames);
dataTable = new JTable(model);
dataTable.setPreferredScrollableViewportSize(new Dimension(500, 70));
dataTable.setFillsViewportHeight(true);
dataTable.setBounds(220, 130, 300, 200);
f.add(lab1);
f.add(text1);
f.add(lab2);
f.add(text2);
f.add(dataTable);
f.add(button);
f.setVisible(true);
f.setSize(300, 350);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Run Code Online (Sandbox Code Playgroud)
接下来我们将使用布局管理器......
| 归档时间: |
|
| 查看次数: |
407 次 |
| 最近记录: |