我正在为我的程序做一个摇摆gui,最近设置了系统外观和感觉。我正在使用Windows 8.1,因此它使用了Windows的外观和感觉。
我的程序的一部分是一个带有一些按钮的JList,它们对该列表的选定元素执行操作。如果没有选择任何元素或列表为空,我想禁用按钮。 当使用窗户外观时,这会导致他们没有看起来很奇怪的文字。
有没有办法在使用Windows外观时使用通常的灰色文本来禁用按钮?
答案 0 :(得分:0)
好的,我发现了我的错误。
行为是由设置外观之前创建的按钮引起的。可以使用以下代码复制它:
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class Foo extends JFrame {
public static void main(String[] args) {
Foo foo = new Foo();
foo.setVisible(true);
}
JButton jButton = new JButton("toggle enable");
JButton jButton2 = new JButton("text");
public Foo() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException
| IllegalAccessException | UnsupportedLookAndFeelException e) {
throw new RuntimeException(e);
}
setLayout(new FlowLayout());
add(jButton);
add(jButton2);
jButton.addActionListener(event -> jButton2.setEnabled(!jButton2.isEnabled()));
pack();
}
}
对于我的特殊情况,我通过在main方法中设置外观而不是窗口构造函数来修复它。