尝试在Java中的GUI中的表下方添加文本字段

时间:2019-04-25 01:10:06

标签: java user-interface intellij-idea jframe

我当前使用的代码有效,但仅显示表格。我正在尝试在其下方添加一个文本字段,但不确定如何操作。我也在尝试在文本字段上设置一个侦听器,但我也不太确定该怎么做。抱歉,这是一个愚蠢的问题,我对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);
    }
}

2 个答案:

答案 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)

所有拳头

最后,简单地说,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,以更好地了解布局问题和快乐编码^-^。