这可以通过BorderLayout 轻松完成。将JLabel 和JTextField 添加到具有默认FlowLayout 的JPanel 并使用正确的BorderLayout 位置将JPanel 和JTabel 添加到框架中
类似的东西
JTable table = new JTable(data, cols);
JTextField jtf = new JTextField(20);
JLabel label = new JLabel("This is a text field");
JPanel panel = new JPanel();
panel.add(label);
panel.add(jtf);
JFrame frame = new JFrame();
frame.add(panel, BorderLayout.SOUTH); <----
frame.add(new JScrollPane(table), BorderLayout.CENTER); <----
朗姆酒这个例子
import java.awt.BorderLayout;
import javax.swing.JFrame;
import static javax.swing.JFrame.EXIT_ON_CLOSE;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
public class TableWithOthers {
public TableWithOthers() {
Object[][] data
= {{"Hello", "World"},
{"Hello", "World"},
{"Hello", "World"},
{"Hello", "World"}};
String[] cols = {"Hello", "World"};
JTable table = new JTable(data, cols);
JTextField jtf = new JTextField(20);
JLabel label = new JLabel("This is a text field");
JPanel panel = new JPanel();
panel.add(label);
panel.add(jtf);
JFrame frame = new JFrame();
frame.add(panel, BorderLayout.SOUTH);
frame.add(new JScrollPane(table), BorderLayout.CENTER);
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new TableWithOthers();
}
});
}
}
要动态添加行,您可以使用基本的DefaultTableModel。如果你知道你的列名,你可以这样做
String[] cols = {"Col 1, "Col 2", "Col 3};
DefaultTableModel model = new DefaultTableModel(cols, 0);
JTable table = new JTabel(model);
然后添加行,只需在按钮actionPerformed 方法中执行类似操作
public void actionPerformed(ActionEvent e) {
String data1 = textField1.getTex();
String data2 = textField2.getTex();
String data3 = textField3.getTex();
Object[] row = {dat1, data2, data3};
model.addRow(row);
}
只需向模型中添加行并动态更新表格