我有一个JButton,我想将背景设置为一种颜色。在窗口上设置JButton背景颜色
JButton button = new JButton();
button.setVisible(true);
button.setPreferredSize(new Dimension(student_scroll.getWidth(), 50));
button.setBorder(BorderFactory.createLineBorder(Color.WHITE, 1));
button.setBackground(Color.BLACK);
button.setForeground(Color.WHITE);
button.setOpaque(true);
我用这个用于mac,它显示为我想要的。然而,在Windows上尝试它时,前景是白色的(应该是),但背景是空的。
Setting background color to JButton
说加button.setContentAreaFilled(false);
我做到了,但都没有效果。大多数人说要添加button.setOpaque(true);
,我也已经这样做了。
我还有什么要做的,它会显示黑色背景?
编辑
按照要求,SSCCE:
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class MainSwing extends JFrame {
private static final long serialVersionUID = -8231889836024827530L;
public static void main(String[] args) {
try {
System.setProperty("apple.laf.useScreenMenuBar", "true");
System.setProperty("com.apple.mrj.application.apple.menu.about.name", "Test");
UIManager.put("ScrollBarUI", "main.CustomScrollBarUI");
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch(ClassNotFoundException e) {
System.out.println("ClassNotFoundException: " + e.getMessage());
}
catch(InstantiationException e) {
System.out.println("InstantiationException: " + e.getMessage());
}
catch(IllegalAccessException e) {
System.out.println("IllegalAccessException: " + e.getMessage());
}
catch(UnsupportedLookAndFeelException e) {
System.out.println("UnsupportedLookAndFeelException: " + e.getMessage());
}
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame() {
Container c = getContentPane();
JButton button = new JButton("Hello");
{
button.setText("Hello");
button.setVisible(true);
button.setPreferredSize(new Dimension(100, 50));
button.setBorder(BorderFactory.createLineBorder(Color.WHITE, 1));
button.setBackground(Color.BLACK);
button.setForeground(Color.WHITE);
button.setOpaque(true);
c.add(button);
}
};
frame.setSize(500, 500);
frame.setBackground(Color.BLACK);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
看来这个问题已经是与行:UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
,当我将其删除,按钮是黑色的。
工作正常,我。发布一个合适的[SSCCE](http://sscce.org/)来说明问题。所以你需要的是一个带有按钮的框架来做你的测试。整个程序将是10-15行代码。 – camickr
'setContentAreaFilled(false)'和/或'setBorderPainted(false)'。 “填充”效果由外观和感觉委托提供,我不知道任何影响其使用颜色的方法 – MadProgrammer
'button.setVisible(true);'不是必需的。只需将它添加到一个顶层窗口(框架,窗口,对话框等)中,它可以在添加组件后自行打包,然后设置为可见。 'button.setPreferredSize(new Dimension(student_scroll.getWidth(),50));'如果按钮没有文本,则可以使用(可能是透明的)图像轻松设置大小。如果按钮**具有文本**,则更好地根据字体大小和文本内容以及包含它的按钮的边距和边框来确定大小。在任何情况下,我们都不需要**设置**首选尺寸。 –