请问一下 一个JAVA SWING的程序 在执行中 往界面添加了一个JLabel  我调用了repaint函数 不能显示出来,但是我最小化窗口然后还原 就能显示出来 
这个过程中执行了什么函数才使得添加的JLabel显示出来的呢
或者有没有别的方法不用最小化然后还原 让添加的JLabel就能显示出来的

解决方案 »

  1.   

    你得把code贴出来啊,要不怎么让人分析呢?
      

  2.   

    你调用的是界面的repaint()还是JLabel的repaint()
      

  3.   

    要实现什么功能?
    code有木有??
      

  4.   

    要实现的功能就是 点击一个按钮 往界面上添加一个JLabel 问题是 点击之后添加的JLabel 不能立即显示出来 而是要最小化然后再还原 就能显示出来,这应该很清楚的表述吧?
      

  5.   

    import java.awt.*;
    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无法显示 要最小化 然后还原就能显示
    }
    }
    我写了个我的问题的例子 帮忙看看怎么实现吧
      

  6.   

    我想要实现的 简单点说 就是点击上面代码中的添加按钮之后 那个new Label马上就添加到界面上
      

  7.   

    将repaint()方法换位valide()就可以了@Override
    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无法显示 要最小化 然后还原就能显示
    }
      

  8.   

    panel.repaint();
    的前面加一句
    panel.revalidate();
    试试
      

  9.   

    谢谢楼上2位大神 问题解决了!我刚查了validate的API 原来在最小化和改变窗口大小的时候就会调用revalidate这个方法,所以才会出现添加的JLabel  非常感谢哈