我试图在同一个地方的面板上用按钮取消隐藏文本区域。
代码如下:
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);
}
});
}}
但它没有向我展示里面有文字的文字区域..
请帮忙。 感谢
答案 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);
}
});
}