【问题标题】:hiding panel and showing JTextArea隐藏面板并显示 JTextArea
【发布时间】:2013-09-18 14:03:06
【问题描述】:

我正在尝试在同一位置使用面板上的按钮取消隐藏文本区域。

代码如下:

public class experiment {

public static void main(String[] args){
    final JFrame f = new JFrame("experiment");
    final JTextArea tx = new JTextArea();
    final JPanel pn = new JPanel();
    final JButton bt = new JButton("click me");
    f.setSize(500,500);
    f.setVisible(true);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.add(tx);
    tx.setText("hello");
    f.add(pn);
    pn.add(bt);
    bt.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e) {

            pn.remove(bt);
            f.remove(pn);

        }



    });
 }}

但它没有向我显示其中包含文本的文本区域..

请帮忙。 谢谢

【问题讨论】:

  • 如果您认为它没有用......或者简单,那么为什么您没有重播答案。仍然没有给出所需的输出......

标签: java swing jpanel jtextarea


【解决方案1】:

我不太确定我是否收到了您的问题。您想在按下按钮时显示一个TextArea,对吗? 如果这是您想要的,您应该尝试使用 CardLayout。这是一个关于它的教程。 http://docs.oracle.com/javase/tutorial/uiswing/layout/card.html

希望能帮到你

【讨论】:

  • +1,是的,使用 CardLayout 是首选方法。 @user2761414,您已获得代码。本教程包含一个工作示例。阅读教程并在遇到问题时使用您尝试过的代码提出具体问题。此外,当您下载给定示例并发送文本时,请注意构建程序的更好方法。所有 Swing 代码都应在 EDT 上执行。
【解决方案2】:

您应该使用框架的内容面板来添加文本区域,而不是直接在框架中添加。您可以通过f.getContentPane() 获取内容窗格。

然后你需要一些布局来管理组件的位置。这是一个使用 BorderLayout 的示例。

public static void main(String[] args) {
    final JFrame f = new JFrame("experiment");
    final JPanel pn = new JPanel();
    final JButton bt = new JButton("click me");
    f.setSize(500, 500);
    f.setVisible(true);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.getContentPane().add(pn);
    pn.add(bt);
    final JTextArea tx = new JTextArea();
    f.getContentPane().add(tx, BorderLayout.CENTER);
    f.getContentPane().add(pn, BorderLayout.SOUTH);
    tx.setText("hello");
    bt.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {

            pn.remove(bt);
            f.remove(pn);

        }
    });
}

【讨论】:

  • 感谢您的良好回复..但代码不会删除面板,直到或除非我开始在文本区域中输入...
  • 你可能想试试pn.setvisibility(false)
  • 我想没有像 @darkprince 这样的方法
  • 更正。方法是pn.setVisible(false);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-23
  • 2012-07-19
  • 2020-04-19
  • 2011-03-27
  • 1970-01-01
  • 2023-03-03
  • 2018-05-12
相关资源
最近更新 更多