我的图像显示正确,然后我就有了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);
}
}
答案 0 :(得分:3)
您的问题是您有BorderLayout
(JFrame
s的默认值),并且您在同一位置添加了两个组件。默认值为BorderLayout.CENTER
,通过添加仅具有默认约束的两个组件,第一个组件将被删除,第二个组件将被放置。
至于解决问题,你想达到什么目的?如果您希望组件显示在彼此之上,则可以使用OverlayLayout
。如果您不想这样,请尝试其他布局管理器。