У меня есть такой простой код:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Test {
public static void main(String[] args) {
Rectangle maximizeRectangle=GraphicsEnvironment.getLocalGraphicsEnvironment().
getMaximumWindowBounds();
JFrame frame1 = new JFrame();
JFrame frame2 = new JFrame();
//frame1
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame1.setUndecorated(true);
frame1.setBounds(maximizeRectangle);
JPanel cp1 = new JPanel();
cp1.setBackground(new Color(200, 200, 200));
JButton but1 = new JButton("I'm frame 1");
cp1.add(but1);
ActionListener ac1 = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
frame2.setVisible(true);
//here is my question:
//how can I know when frame2 has been fully painted? and then I can
//set visibility of frame1 to false to avoid flickering
frame1.setVisible(false);
}
};
but1.addActionListener(ac1);
frame1.setContentPane(cp1);
//frame2
frame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame2.setUndecorated(true);
frame2.setBounds(maximizeRectangle);
JPanel cp2 = new JPanel();
cp2.setBackground(new Color(200, 200, 200));
JButton but2 = new JButton("I'm frame 2");
cp2.add(but2);
ActionListener ac2 = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
frame1.setVisible(true);
//here is my question:
//how can I know when frame1 has been fully painted? and then I can
//set visibility of frame2 to false to avoid flickering
frame2.setVisible(false);
}
};
but2.addActionListener(ac2);
frame2.setContentPane(cp2);
frame1.setVisible(true);
}
}
, когда я нажимаю кнопки, я вижу мерцание (фон рабочего стола). Как я могу узнать, что JFrame полностью закрашен на экране, прежде чем я установил видимость другого JFrame в false?
, когда я нажимаю кнопки, я вижу мерцания (фон рабочего стола). Как я могу узнать, что JFrame был полностью нарисован на экране, прежде чем я установил видимость другого JFrame в false?
Я не могу использовать таймер!
Большое спасибо