我现在在学习swing。昨天晚上做了一个小的JFrame,遇到如下疑惑。希望各位帮忙指点一下子。先谢谢大家。我有一个JFrame background 2个JPanel p1和p2现在p2上有一个 JButton button。 我想的是如果我点击p2上的button,点一下。然后在另一个panel p2上会出现一个新的按钮 JButton。我的做法如下:p1.add(new JButton("name of button"));
p1.repaint();但不好使。然后我尝试了各种办法如 validate() revalidate() updateUI()等。均没有效果,我想问问大家这到底应该怎么做。有人说可以先把新的button隐藏,但我不认为这是个好办法。感觉思路是把一个新的组建添加到p1里然后重绘p1。这样对吗?到底该怎么做?请大家帮我想想。谢谢各位了。
p1.repaint();但不好使。然后我尝试了各种办法如 validate() revalidate() updateUI()等。均没有效果,我想问问大家这到底应该怎么做。有人说可以先把新的button隐藏,但我不认为这是个好办法。感觉思路是把一个新的组建添加到p1里然后重绘p1。这样对吗?到底该怎么做?请大家帮我想想。谢谢各位了。
jdk1.6,可以实现。
你实验一下。import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;/**
* @author bzwm
*
*/
public class A extends JFrame{
public A(){
final JPanel p1 = new JPanel();
final JPanel p2 = new JPanel(new FlowLayout());
JButton b = new JButton("ts...");
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
p2.add(new JButton("....."));
p2.validate();
}
});
p1.add(b);
add(p1, BorderLayout.NORTH);
add(p2, BorderLayout.CENTER);
setVisible(true);
setSize(300, 300);
}
public static void main(String args[]){
new A();
}
}