Java Swing渲染GUI元素时出错(Windows 8.1)?
[解决]:我有联想Z500笔记本电脑,它使用自己的英特尔高清4000视频驱动程序。我之所以使用这个驱动程序,是因为它与我笔记本电脑键盘上的热键交互(屏幕亮度为F11、F12)。我在第二台戴尔笔记本电脑上测试了编译好的JAR文件,一切正常!如果您在使用联想预装驱动程序在联想笔记本电脑上呈现Swing元素时遇到任何问题,则必须安装本机Intel驱动程序 === 我使用WindowsL&F制作了一个Swing应用程序,但在运行(编译)之后,我看到了错误的渲染元素。但是当我使用预览时,一切看起来都正常。下面是一些bug屏幕(我想): 左侧:预览 右侧:运行模式 如右图所示,每个元素(包括jTextField、jComboBox、jSpinner和其他元素)的左侧都有一条粗线(如duplicate),除了运行模式下的按钮。有人知道有什么问题吗?有人在这里说,这是视频卡驱动程序的问题,但我到底应该做什么来解决这个问题Java Swing渲染GUI元素时出错(Windows 8.1)?,java,swing,user-interface,netbeans,Java,Swing,User Interface,Netbeans,[解决]:我有联想Z500笔记本电脑,它使用自己的英特尔高清4000视频驱动程序。我之所以使用这个驱动程序,是因为它与我笔记本电脑键盘上的热键交互(屏幕亮度为F11、F12)。我在第二台戴尔笔记本电脑上测试了编译好的JAR文件,一切正常!如果您在使用联想预装驱动程序在联想笔记本电脑上呈现Swing元素时遇到任何问题,则必须安装本机Intel驱动程序 === 我使用WindowsL&F制作了一个Swing应用程序,但在运行(编译)之后,我看到了错误的渲染元素。但是当我使用预览时,一切看起来都正常。
- 系统:Winodows 8.1
- NetBeans:8.0
- Java SDK:1.8.0\u 11
public static void main(String args[]) {
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Windows".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(mainWindow.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(mainWindow.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(mainWindow.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(mainWindow.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new mainWindow().setVisible(true);
}
});
}
使用Windows 8.1 Pro和JRE 1.8.0_25,我发现渲染的gui没有问题,以下是我的屏幕截图:
请编辑您的问题,以包含一个显示您描述的问题的列表。在开发的这个阶段使用GUI编辑器可能是个问题;minimal将排除任何生成的代码,但完整程度足以让您的安装程序运行。
for(javax.swing.UIManager.LookAndFeelInfo:javax.swing.UIManager.getInstalledLookAndFeels()){if(“Windows.equals(info.getName()){javax.swing.UIManager.setLookandFeelf(info.getClassName());break;}
那么Windows PLAF用于Windows,而bugger用于其他?我所说的“bugger the rest”是指离开OSX和Linux/Unix去看..Metal(颤栗)。为什么不改为UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName())代码>?最终的PLAF将是Windows 7 for Windows,Aqua for OS X,GTK或CDE/Motif for Linux和Unix系统。谢谢,我将尝试这个例子@AndrewThompson,我试过你的方法,但一切看起来都一样(下面是代码示例:publicstaticvoidmain(stringargs[])抛出ClassNotFoundException、InstantiationException、IllegalAccessException、UnsupportedLookAndFeelException{
“但一切看起来都一样。”。你使用Windows吗?(检查屏幕截图,当然你会)。关键是它在OS X和Linux/Unix上看起来会不同(与默认的金属板不同)!嗯……真奇怪)我有Windows 8.1 SL,但结果与你的不同……你能告诉我你有什么显卡吗?@alexkowalski我有一个便宜的显卡:移动英特尔(R)我发现了一个问题!我有联想Z500笔记本电脑,它使用自己的英特尔高清4000视频驱动程序。我使用这个驱动程序是因为它与我笔记本电脑键盘上的热键(F5、F6等)交互.我在我的第二台戴尔笔记本电脑上测试了这个编译后的JAR文件,一切正常!太好了!感谢您的测试和帮助,我认为这不是我的本地问题!
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton();
jComboBox1 = new javax.swing.JComboBox();
jTextField1 = new javax.swing.JTextField();
jSpinner1 = new javax.swing.JSpinner();
jProgressBar1 = new javax.swing.JProgressBar();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setText("Button");
jButton1.setText("jButton1");
jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
jProgressBar1.setMinimum(1);
jProgressBar1.setValue(25);
jProgressBar1.setStringPainted(true);
jLabel2.setText("ComboBox");
jLabel3.setText("TextField");
jLabel4.setText("Spinner");
jLabel5.setText("ProgressBar");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel1)
.addComponent(jLabel2)
.addComponent(jLabel3)
.addComponent(jLabel4)
.addComponent(jLabel5))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jComboBox1, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jTextField1)
.addComponent(jProgressBar1, javax.swing.GroupLayout.DEFAULT_SIZE, 181, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jButton1)
.addComponent(jSpinner1, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(0, 0, Short.MAX_VALUE)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(jButton1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel3))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jSpinner1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel4))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jProgressBar1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel5))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jProgressBar1, jSpinner1});
pack();
}