我用JFrame弄了个框架,setLayout(null),然后在它上面放了几个JPanel,有的JPanel当中会放入JButton
       和JLabel等一些小东西,而有些JLabel中也会放入图片~~~~~~

现在问题来了:
为什么我运行后,这些JButton,JLabel,以及放在他们当中的图片和更改的颜色不会显示出来,而当我最小化再最大化后才会显示!!!!!!!

解决方案 »

  1.   

    我不知道你是怎么设计的,你所谓的颜色变化应该是先有一种颜色,完后触发某事件后再显示另一种颜色吗?如果是这样,你触发那个改变图片颜色后就应该调用repaint()方法才能显示颜色的变化吧
      

  2.   

    请问一下你所说的repaint()应该怎么用?
      

  3.   


    import java.awt.*;
    import javax.swing.*;public class sy extends JFrame{
    public sy(){
    this.setResizable(false);
    this.setTitle("sy");
         this.setSize(800,610);
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    int centerX=screenSize.width/2;
    int centerY=screenSize.height/2;
    this.setLocation(centerX-400, centerY-300);
    this.setVisible(true);
    this.setIconImage(new ImageIcon("1.jpg").getImage()); 
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    ImageIcon img = new ImageIcon("2.jpg");
    JLabel j1 = new JLabel();
    j1.setBounds(new Rectangle(0,0,800,570));
    j1.setIcon(img);
            JToggleButton jb1 = new JToggleButton("sy");
            jb1.setFont(new Font("Agency FB",Font.BOLD,30));
    jb1.setBackground(Color.pink);
    jb1.setForeground(Color.black);
    jb1.setCursor(new Cursor(Cursor.HAND_CURSOR));
    jb1.setContentAreaFilled(false);
    jb1.setBorderPainted(false);                   //不显示边框
    jb1.setBounds(new Rectangle(608,510,200,50));
        
         img = new ImageIcon("1.gif");
    JLabel j0 = new JLabel();
    j0.setIcon(img);
    j0.setBounds(new Rectangle(10,0,240,240));
         this.add(j0);
         this.add(jb1);
         this.add(j1);
    }
    public static void main(String[] args){
    new sy();
    }}
      

  4.   

    这是我之前给人写的一个简单的GUI程序,是将一张图片添加到了JLable对象中去显示。你要记住,图片button这些东西都是要放到容器中去 才能显示出来的 不能直接添加  建议你先看下书上的例子  从简单的开始  先不要搞这么复杂  
    import java.awt.*;
    import javax.swing.*;public class SimpleTest extends JFrame{
    private ImageIcon image;
    private JLabel lable;
    private JPanel panel;

    public SimpleTest(){
    super("Test JLabel");

    image = new ImageIcon("C:/2_lxcnn.jpg");
    lable = new JLabel(image);
            
            panel = new JPanel(new BorderLayout());
            
            panel.add(lable, BorderLayout.SOUTH);
            
            add(panel);
            setSize(600, 400);
            setVisible(true);
    }
    public static void main(String args[]){
    new SimpleTest();
    }
    }
      

  5.   

    我当初学GUI的时候遇到过和你一模一样的问题,所以你一说我就明白了你的问题是什么了,但你别高兴太早,我也解决不了,当初这个问题困扰我的时候,我也求助过很多人,包括教我们的老师,我记得我的老师说这种问题不是我们的代码原因,而是系统的一点bug,遇到某些代码的时候就出现这种状况,似乎解决不了,这种情况很常见,建议你做些改动,换点思路吧!
      

  6.   

    this.setVisible(true);
    这句话写在构造方法最下面试一下
      

  7.   

    这个 默认 是 false的