请问一下 一个JAVA SWING的程序 在执行中 往界面添加了一个JLabel 我调用了repaint函数 不能显示出来,但是我最小化窗口然后还原 就能显示出来
这个过程中执行了什么函数才使得添加的JLabel显示出来的呢
或者有没有别的方法不用最小化然后还原 让添加的JLabel就能显示出来的
这个过程中执行了什么函数才使得添加的JLabel显示出来的呢
或者有没有别的方法不用最小化然后还原 让添加的JLabel就能显示出来的
code有木有??
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.*;
public class MyPanel extends JFrame implements ActionListener{
private JPanel panel;
private JLabel jl1;
private JButton jb;
public MyPanel(){
panel=new JPanel(new BorderLayout());
jl1=new JLabel("1111");
panel.add(jl1,BorderLayout.CENTER);
jb=new JButton("添加");
jb.setActionCommand("add");
jb.addActionListener(this);
panel.add(jb,BorderLayout.SOUTH);
this.add(panel);
this.setSize(200, 200);
this.setVisible(true);
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}
public static void main(String []a){
MyPanel my=new MyPanel();
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
JLabel jl=new JLabel("new Label");
panel.add(jl,BorderLayout.NORTH);
panel.repaint();//在这几句代码里面添加的JLabel无法显示 要最小化 然后还原就能显示
}
}
我写了个我的问题的例子 帮忙看看怎么实现吧
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
JLabel jl = new JLabel("new Label");
panel.add(jl, BorderLayout.NORTH);
panel.validate();
// panel.repaint();// 在这几句代码里面添加的JLabel无法显示 要最小化 然后还原就能显示
}
的前面加一句
panel.revalidate();
试试