Я использую Windows 7 с Aero, и у меня очень быстрая видеокарта (Radeon 6870), которую я использую для игр.
У меня есть некоторые проблемы при изменении размера очень простых программ, которые я делаю с Ява. Например, эта программа абсолютно ничего не делает. У него нет слушателей действий, никаких циклов. Это просто графический интерфейс с кнопками.
Изменение размера компонентов занимает около секунды. Для меня это очень заметно.
Я попытался включить ускорение OpenGl, чтобы решить эту проблему. Я скомпилировал JAR и
запустите его с помощью java -Dsun.java2d.opengl = true -jar C: \ Test.jar
. В результате немного меньше черных областей вокруг окна, но гораздо больше мерцания. На самом деле мерцание отображается серым на скриншоте выше.
Нет. Были протестированы Eclipse, Netbeans, Chrome и другие приложения. Ни у кого нет этой проблемы. Поэтому я должен заключить, что с кодом должна быть какая-то проблема. Различные люди запускали этот код и говорили, что у них «нет проблем». Если вы собираетесь протестировать его, убедитесь, что вы изменили размер окна с наименьшего размера до наибольшего размера экрана, перемещая мышь круговыми движениями.
import java.awt.*;
import javax.swing.*;
public class JFrameWithButtonsTest {
private int iScreen = 25;
private int iLocation = 10;
JFrame frame = new JFrame();
Container contentPane = frame.getContentPane();
public JFrameWithButtonsTest() {
JPanel northButtonPanel = new JPanel();
northButtonPanel.setLayout(new GridLayout(2,2));
northButtonPanel.add(new JButton(" I do nothing"));
northButtonPanel.add(new JButton(" I do nothing"));
northButtonPanel.add(new JButton(" I do nothing"));
northButtonPanel.add(new JButton(" I do nothing"));
contentPane.add(northButtonPanel, BorderLayout.NORTH);
JPanel southButtonPanel = new JPanel();
southButtonPanel.setLayout(new GridLayout(2,2));
southButtonPanel.add(new JButton(" I do nothing"));
southButtonPanel.add(new JButton(" I do nothing"));
southButtonPanel.add(new JButton(" I do nothing"));
southButtonPanel.add(new JButton(" I do nothing"));
contentPane.add(southButtonPanel, BorderLayout.SOUTH);
JPanel eastButtonPanel = new JPanel();
eastButtonPanel.setLayout(new GridLayout(2,2));
eastButtonPanel.add(new JButton(" I do nothing"));
eastButtonPanel.add(new JButton(" I do nothing"));
eastButtonPanel.add(new JButton(" I do nothing"));
eastButtonPanel.add(new JButton(" I do nothing"));
contentPane.add(eastButtonPanel, BorderLayout.EAST);
boolean packFrame = false;
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = frame.getSize();
frameSize.height = (int) (iScreen * screenSize.height / 100);
frameSize.width = (int) (iScreen * screenSize.width / 100);
frame.setSize(frameSize);
frame.setLocation((screenSize.width - frameSize.width) / iLocation,
(screenSize.height - frameSize.height) / iLocation);
if (packFrame) {
frame.pack();
packFrame = true;
} else {
frame.validate();
}
frame.setVisible(true);
}
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
e.printStackTrace();
}
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
new JFrameWithButtonsTest();
}
});
}
}
Обратите внимание, что проблема все еще существует без этой строки: UIManager.setLookAndFeel (UIManager.getSystemLookAndFeelClassName ());