Java 更改JButton的颜色而不更改其形状
我想通过以下方式更改JButton的颜色:Java 更改JButton的颜色而不更改其形状,java,swing,Java,Swing,我想通过以下方式更改JButton的颜色: JButton button = new JButton(); button.setBackground(Color.decode("#00a5ff")); 为了进行更改,我必须补充: button.setOpaque(true); button.setBorderPainted(false); 但是,这会删除边缘周围的曲线,从而更改按钮的形状。有没有一种方法可以简单地改变颜色并保留其他属性?另一个例子是当你按下一个按钮而没有改变它的颜色时,颜色
JButton button = new JButton();
button.setBackground(Color.decode("#00a5ff"));
为了进行更改,我必须补充:
button.setOpaque(true);
button.setBorderPainted(false);
但是,这会删除边缘周围的曲线,从而更改按钮的形状。有没有一种方法可以简单地改变颜色并保留其他属性?另一个例子是当你按下一个按钮而没有改变它的颜色时,颜色的改变(变暗)
下面是一些说明两个按钮之间差异的代码:
public static void main(String[] args) {
JFrame frame = new JFrame("frame");
frame.setSize(new Dimension(300, 300));
JButton button1 = new JButton();
JButton button2 = new JButton();
button1.setPreferredSize(new Dimension(100,100));
button2.setPreferredSize(new Dimension(100,100));
button2.setBackground(Color.decode("#00a5ff"));
button2.setBorderPainted(false);
button2.setOpaque(true);
JPanel pane1 = new JPanel(new FlowLayout());
JPanel pane2 = new JPanel(new FlowLayout());
pane1.add(button1);
pane2.add(button2);
frame.add(pane1, BorderLayout.WEST);
frame.add(pane2, BorderLayout.EAST);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
谢谢也许您的代码中还有其他内容。我修改了一个小示例,使用常规按钮和JButton只改变了背景(颜色)。请参阅以下内容
public static void main(String[] args) {
Frame frame = new Frame();
Panel panel = new Panel();
Button closeButton = new Button("Close");
closeButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
frame.setVisible(false);
frame.dispose();
}
});
closeButton.setBackground(Color.decode("#00a5ff"));
panel.add(closeButton);
frame.add(panel);
frame.setSize(200, 100);
frame.setLocation(200, 50);
frame.setVisible(true);
}
我只是测试了以下内容:
JFrame frame = new JFrame("frame");
frame.setSize(new Dimension(300, 300));
JButton button = new JButton();
button.setBackground(Color.decode("#00a5ff"));
frame.add(button);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
这似乎是可行的,但我正在Ubuntu Studio 16.04上工作。如果您注意到它不起作用,请告诉我。请显示白色按钮或失败按钮的结果(如果仍然不起作用)?这只会创建一个白色(标准按钮),周围有蓝色边框。请注意,我使用的是Mac电脑。我有一个蓝色按钮,但我使用的是Win10。我复制了你添加的代码,也得到了蓝色按钮。问题是没有得到蓝色按钮。。。问题是按钮会变成正方形(而不是软边),按下按钮时不会变暗,就像不改变颜色时一样。大多数本地外观和感觉不是通过背景填充按钮,而是通过生成按钮“形状”的
contentAreaFilled
属性填充按钮,使background
属性变得有些无用这不起作用,因为颜色不会改变。我用的是Mac电脑。为了改变颜色,我必须执行button.setbOrderPaint(false)
删除按钮的平滑边和其他属性,使其成为具有该颜色的矩形。@程序员您知道如何仅更改颜色而不弄乱形状吗?我认为Netbeans能够在design studio中做到这一点,但是,需要哪些代码行?@Playdowin不,正如我所说,这是由L&F管理的,除非它提供一些“超级机密属性”(类似于Nimbus),否则几乎不可能做到do@MadProgrammer我写了一个例子来说明大多数情况下的差异,这是由look-and-feel委托控制的,它可能会也可能不会为您提供更改它的方法(我很确定Windows L&F不会-即使您扩展了实现,也都是通过私有功能完成的:P)