根据用户输入自动添加行
adding row automatically based on user input
我想要做的是我的 table 应该根据我在文本框中输入的行数自动添加行。例如,如果用户在文本框中输入 3 然后我单击他单击了 jbutton table 将自动有 3 行具有空值..我只是编程新手,这是一个实验室 activity 我们昨天做过,但好像没人做过
private JPanel contentPane;
private JTable table;
private JTextField textField;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
WindowwwTry frame = new WindowwwTry();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public WindowwwTry() {
DefaultTableModel dm = new DefaultTableModel();
addWindowListener(new WindowAdapter() {
@Override
public void windowOpened(WindowEvent e) {
table.setModel(dm);
dm.addColumn("PROCESS");
dm.addColumn("CPU Time");
dm.addColumn("Arrival Time");
}
});
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
table = new JTable();
table.setBounds(177, 123, 1, 1);
contentPane.add(table);
textField = new JTextField();
textField.setBounds(92, 24, 86, 20);
contentPane.add(textField);
textField.setColumns(10);
JButton btnNewButton = new JButton("New button");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
try{
int ps = Integer.parseInt(textField.getText());
for(int x=0; x<ps; x++){
dm.addRow(new Object[]{x});
}
}catch(Exception e){
e.printStackTrace();
}
}
});
btnNewButton.setBounds(206, 23, 89, 23);
contentPane.add(btnNewButton);
}
您的代码运行良好。您遇到的问题是看不到结果,因为 table 的大小非常非常小。将设置边界的行更改为如下所示:
table.setBounds(177, 123, 200, 100);
正如@gawi 所说,你的 table 太小了(它的宽度和高度都是 1 个像素)。您应该将它设置为更高的值(我尝试使用 table.setBounds(177, 123, 100, 100)
并且它非常适合 window.
你的 for 循环也不正确。你想要那个
table will automatically have 3 rows with null values
所以 for 循环应该看起来像这样
for(int x=0; x<ps; x++){
dm.addRow(new Object[]{null, null, null});
}
将 table
中的所有 3 列设置为 null
我想要做的是我的 table 应该根据我在文本框中输入的行数自动添加行。例如,如果用户在文本框中输入 3 然后我单击他单击了 jbutton table 将自动有 3 行具有空值..我只是编程新手,这是一个实验室 activity 我们昨天做过,但好像没人做过
private JPanel contentPane;
private JTable table;
private JTextField textField;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
WindowwwTry frame = new WindowwwTry();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public WindowwwTry() {
DefaultTableModel dm = new DefaultTableModel();
addWindowListener(new WindowAdapter() {
@Override
public void windowOpened(WindowEvent e) {
table.setModel(dm);
dm.addColumn("PROCESS");
dm.addColumn("CPU Time");
dm.addColumn("Arrival Time");
}
});
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
table = new JTable();
table.setBounds(177, 123, 1, 1);
contentPane.add(table);
textField = new JTextField();
textField.setBounds(92, 24, 86, 20);
contentPane.add(textField);
textField.setColumns(10);
JButton btnNewButton = new JButton("New button");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
try{
int ps = Integer.parseInt(textField.getText());
for(int x=0; x<ps; x++){
dm.addRow(new Object[]{x});
}
}catch(Exception e){
e.printStackTrace();
}
}
});
btnNewButton.setBounds(206, 23, 89, 23);
contentPane.add(btnNewButton);
}
您的代码运行良好。您遇到的问题是看不到结果,因为 table 的大小非常非常小。将设置边界的行更改为如下所示:
table.setBounds(177, 123, 200, 100);
正如@gawi 所说,你的 table 太小了(它的宽度和高度都是 1 个像素)。您应该将它设置为更高的值(我尝试使用 table.setBounds(177, 123, 100, 100)
并且它非常适合 window.
你的 for 循环也不正确。你想要那个
table will automatically have 3 rows with null values
所以 for 循环应该看起来像这样
for(int x=0; x<ps; x++){
dm.addRow(new Object[]{null, null, null});
}
将 table
中的所有 3 列设置为null