如何在没有闪烁屏幕的情况下在1个JFrame和另一个JFrame之间切换?切换的代码是什么?我用这段代码切换......
JFrame2 ref = new JFrame2();
ref.setVisible(true);
this.setVisible(false)
是的,它运行并切换到JFrame2,但问题是当它切换到JFrame 2时屏幕闪烁。
答案 0 :(得分:1)
我建议您制作自定义JPanel
并更新它,而不是使用新的JFrame
。
将您的挥杆组件拆分并分组到JPanels
然后调用
panel.revalidate();
panel.repaint();
您可能还想设置
panel.setDoubleBuffered(真); //顺利过渡。
有关详细信息,请参阅Oracle's doc。
这是一个简单的例子。
public static void main(String[] args) throws IOException {
JFrame f = new JFrame("Frame");
f.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
f.setSize(300, 300);
File file = new File("src/stackoverflow/index.png");
customPanel pane = new customPanel();
pane.setDoubleBuffered(true);
pane.setImage(ImageIO.read(file));
f.add(pane);
f.setVisible(true);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
file = new File("src/stackoverflow/index1.png");
pane.setImage(ImageIO.read(file));
pane.repaint();
}
static class customPanel extends JPanel{
BufferedImage image;
public void setImage(BufferedImage image) {
this.image = image;
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, null);
}
}