#java #swing #jbutton #actionlistener #jtextarea
Вопрос:
Я выполняю простую программу, которая отображает информацию о конкретном университете в a JTextArea
после нажатия кнопки JButton.
Как я могу сделать так, чтобы область JTextArea появилась после нажатия кнопки?
Вот мой код:
package toolBar; import javax.swing.*; import java.awt.*; public class ToolBar extends JFrame { JFrame frame=new JFrame(); JButton uni1=new JButton("Hasheimte University"); JButton uni2=new JButton("The University of Jordan"); JButton uni3=new JButton("German Jordanian University"); JButton exit=new JButton("Close"); JToolBar tb = new JToolBar(); JTextArea text = new JTextArea("bla bla bla"); public ToolBar(){ setTitle("Jordanian universities"); setSize(600,300); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); add(tb); tb.add(uni1); tb.add(uni2); tb.add(uni3); tb.add(exit); tb.setFloatable(false); setLayout(new FlowLayout (FlowLayout.CENTER)); uni1.addActionListener(e -gt;{ }); exit.addActionListener(e -gt; { dispose(); }); } }
Комментарии:
1. Есть несколько способов сделать это, но, конечно, вы можете просто сделать его невидимым
text.setVisible(false);
, а затем добавить его в jframe. Чтобы показать его снова, используйтеtext.setVisible(true);
событие внутри кнопки2. Лучше использовать раскладку карт для обмена компонентами. Еще лучше-покажите область JTextArea , но отключите ее с помощью
.seteEnabled(false)
, а затем, при необходимости, включите ее.3. setEnabled на самом деле не означает, делать видимым или нет, поэтому я думаю, что опция setVisible лучше. Замена компонентов сделала бы его немного «тяжелее» для запуска. Также немного сложнее для того, кто только начинает. Хотя это может быть хорошим продолжением
Ответ №1:
Все компоненты Swing имеют setVisible
метод, который вы можете использовать. Вы начинаете с невидимого компонента и делаете его видимым при нажатии кнопки.
Альтернативой является добавление его в родительский контейнер по нажатию кнопки ( Container#add
), но для этого требуется повторная проверка макета. Таким образом, первый вариант проще.