Dav*_*vid 8 java swing 2d jframe
我正在使用Windows 7和Aero,并且有一个非常快的显卡(Radeon 6870),我用它来玩游戏.
调整我使用java制作的非常简单的程序时,我遇到了一些问题.例如,这个程序绝对没有.它没有动作侦听器,没有循环.它只是一个带按钮的GUI界面.
大约需要一秒钟来调整组件的大小.对我来说非常明显.
我试图启用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();
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,如果没有此行,问题仍然存在: UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
小智 5
我开始注意到我最近的两个Java程序.
我查看了NetBeans的配置文件,发现以下内容会改善这种情况:
public static void main(final String... args) {
System.setProperty("sun.java2d.noddraw", Boolean.TRUE.toString());
...
Run Code Online (Sandbox Code Playgroud)
这-Dsun.java2d.noddraw=true
与JVM命令行上的相同.
归档时间: |
|
查看次数: |
5082 次 |
最近记录: |