-1

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

代码如下:

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

        }



    });
 }}

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

请帮忙。谢谢

4

2 回答 2

1

I'm not very sure if I got your question. You want to, when the button is pressed, show a TextArea, is it correct? If this is what you want, you should try to use CardLayout. Here is one tutorial about it. http://docs.oracle.com/javase/tutorial/uiswing/layout/card.html

I hope I could help

于 2013-09-18T14:10:47.663 回答
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);

        }
    });
}
于 2013-09-18T14:12:02.493 回答