Как я могу сделать так, чтобы JTextArea отображался после нажатия кнопки

#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 ), но для этого требуется повторная проверка макета. Таким образом, первый вариант проще.