Попытка добавить текстовое поле под таблицей в GUI в Java - PullRequest
0 голосов
/ 25 апреля 2019

Код, который у меня сейчас работает, но отображает только таблицу.Я пытаюсь добавить текстовое поле под ним, но я не уверен, как бы я это сделал.Я также пытаюсь установить слушателя в текстовом поле, и я не слишком уверен, как это сделать.Извините, если это глупый вопрос, у меня нет опыта в формах 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 ]

2 голосов
/ 25 апреля 2019

Вы можете добавить текстовое поле, используя следующий код

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

0 голосов
/ 26 апреля 2019

кулак всего

Последнее, проще говоря, 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» в текстовом поле. см. Как использовать BoxLayout для лучшего понимания разметки и удачного кодирования ^ - ^.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...