我当前使用的代码有效,但仅显示表格。我正在尝试在其下方添加一个文本字段,但不确定如何操作。我也在尝试在文本字段上设置一个侦听器,但我也不太确定该怎么做。抱歉,这是一个愚蠢的问题,我对Java表单没有经验
public class table extends JFrame {
JTable TestDB;
public table(){
setLayout(new FlowLayout());
String[] columnNames={"First Name","Last Name","Address"};
Object[][] data={{"Bob","Hazel","HelpMeDr"},{"Yo","Whattup","ezpz"}};
TestDB=new JTable(data,columnNames);
TestDB.setPreferredScrollableViewportSize(new Dimension(500,50));
TestDB.setFillsViewportHeight(true);
JScrollPane scrollPane=new JScrollPane(TestDB);
add(scrollPane);
}
}
答案 0 :(得分:2)
您可以使用下一个代码添加文本字段
textField = new JTextField(20);
//add a listener
textField.addActionListener(this);
现在要使某些内容与文本字段进行交互后,您需要创建一个方法
public void actionPerformed(ActionEvent evt) {
//do this when action performed at the textfield
}
我建议您访问下一个网站以获取更多信息https://docs.oracle.com/javase/tutorial/uiswing/components/textfield.html
答案 1 :(得分:0)
所有拳头
JFrame
这是why you should not set a listener on the text field
,您不!你加一个听众,差别很大。 @P开发人员的回答在听众的问题上清晰明了。add
与框架对象一起使用,而应使用getContentPane().add
,并且setLayout
方法也是如此,因为您并没有真正在框架本身上使用它,在许多情况下,它可能会使您的应用程序崩溃。参见when should I use JFrame.add(component) and JFrame.getContentPane().add(component) in java
最后,简单地说,FlowLayout
仅在将组件水平对齐时才使用,就好像它是一行文本一样。
使用BoxLayout
之类的其他布局
像这样
public Table() {
getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));
String[] columnNames = {"First Name", "Last Name", "Address"};
Object[][] data = {{"Bob", "Hazel", "HelpMeDr"}, {"Yo", "Whattup", "ezpz"}};
TestDB = new JTable(data, columnNames);
TestDB.setPreferredScrollableViewportSize(new Dimension(500, 50));
TestDB.setFillsViewportHeight(true);
JScrollPane scrollPane = new JScrollPane(TestDB);
getContentPane().add(scrollPane);
JTextField textField = new JTextField();
getContentPane().add(textField);
}
最后一件事是,文本组件必须使用至少10种类型的侦听器,而您必须使用满足您需求的一种,我们朋友的回答(我赞成)建议您使用ActionListener
每当用户在文本字段中按“ Enter”键时,就会调用该命令。
请参阅How to Use BoxLayout,以更好地了解布局问题和快乐编码^-^。