我正在尝试在JTable
或类似的GridLayout
下面放置一些文字字段和标签。
当我在字段中键入数据时,我想将它们传递给表。我现在在面板中有文本字段和标签,但是想在上面添加一个表。
我尝试使用JPanel
,JFrame
,JTable
。但我不能让他们一起工作。
有关Swing / AWT导入的经验,有关获得此结果的最佳方法的任何建议吗?
答案 0 :(得分:5)
使用BorderLayout
,将JTable
(包含在JScrollPane
中)保留在NORTH
位置。
使用JPanel
或JLabel
JTextField
位置添加FlowLayout
,其中包含GridBagLayout
和SOUTH
使用GridBagLayout
,将所有组件添加到单个面板中......
您应该查看Laying Out Components Within a Container了解更多详情......
答案 1 :(得分:2)
这可以通过BorderLayout
轻松完成。将JLabel
和JTextField
添加到JPanel
及其默认FlowLayout
,并使用正确的{JPanel
和JTabel
添加到框架中{1}}职位
像这样的东西
BorderLayout
朗姆酒这个例子
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
只需向模型中添加行,动态更新表格