图像未显示在JFrame中

时间:2013-07-28 08:37:34

标签: java swing jframe jbutton actionlistener

我的图像显示正确,然后我就有了JButton。现在我已经在我的代码中添加了一个JButton,我的图像不显示。在ActionPerformed方法中,我告诉按钮setVisbible(false)。当我点击按钮时,它会消失,背后的所有内容都是背景。

public class Main extends JFrame implements ActionListener {

public static void main(String[] args) {
    Main main = new Main();

}

ImageIcon GIF = new ImageIcon("src/Zombie Steve gif.gif");
JButton button = new JButton("Click me!");
JLabel Label = new JLabel(GIF);

public Main() {

    button.addActionListener(this);

    Label.setHorizontalAlignment(0);

    JFrame Frame = new JFrame("zombieSteveGIF");
    Frame.setSize(650, 650);
    Frame.setVisible(true);
    Frame.add(Label);
    Frame.add(button);
    Frame.setDefaultCloseOperation(EXIT_ON_CLOSE);

    while (true) {
        Frame.getContentPane().setBackground(Color.BLUE);
        try {
            Thread.sleep(200);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        Frame.getContentPane().setBackground(Color.GREEN);
        try {
            Thread.sleep(200);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        Frame.getContentPane().setBackground(Color.RED);
        try {
            Thread.sleep(200);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}

public void actionPerformed(ActionEvent e) {
    button.setVisible(false);

}

}

1 个答案:

答案 0 :(得分:3)

您的问题是您有BorderLayoutJFrame s的默认值),并且您在同一位置添加了两个组件。默认值为BorderLayout.CENTER,通过添加仅具有默认约束的两个组件,第一个组件将被删除,第二个组件将被放置。

至于解决问题,你想达到什么目的?如果您希望组件显示在彼此之上,则可以使用OverlayLayout。如果您不想这样,请尝试其他布局管理器。