隐藏面板并显示JTextArea

时间:2013-09-18 14:03:06

标签: java swing jpanel jtextarea

我试图在同一个地方的面板上用按钮取消隐藏文本区域。

代码如下:

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);

        }



    });
 }}

但它没有向我展示里面有文字的文字区域..

请帮忙。 感谢

2 个答案:

答案 0 :(得分:1)

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

我希望我能帮忙

答案 1 :(得分:1)

您应该使用框架的内容面板添加文本区域,而不是直接在框架中添加。您可以通过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);

        }
    });
}