当前位置: 首页 > 知识库问答 >
问题:

改变JButton的颜色而不改变其形状

姬捷
2023-03-14

我想通过以下方式更改JButton的颜色:

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);
}

谢谢

共有2个答案

子车征
2023-03-14

也许你的代码中还有其他的东西。我修改了一个小示例,使用常规按钮和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);
}
衡子安
2023-03-14

我只是测试了以下内容:

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上工作。如果您注意到它不起作用,请告诉我。你能显示你的白色按钮或失败按钮的结果吗(如果它仍然不工作)?

 类似资料:
  • 我试图在我的应用中使用材料设计,为了使用浮动操作按钮,我使用了appcompat-v7库。但是,为了使用这个,我必须使用主题:“theme.appcompat.light”。我只是不能为API22设置应用程序的背景色。我对在API的20或贝娄上工作不感兴趣 我的主要活动:

  • 我使用的是Eclipse Color Theme插件。 当我更改主题时,除了.等之外,所有的颜色都改变了。 它们保持黑色,而当我试图使用深色主题时,这使得事情变得困难。 问题是在使用Groovy时没有正确设置语法颜色。 这解决了问题

  • 我有一个房子的资源链接,如果你想查看它。它基本上只是一个黑色的主页按钮。 我有它包括和导入作为图像资产作为绘图。 我试图将其设置为按钮,但以编程方式将其更改为白色。 以下是我尝试将颜色更改为白色的方法: 知道我哪里出错了吗?

  • 我试着把这个transcluent的前景色改成黑色,但仍然是蓝灰色。我做错了什么?

  • 只是尝试在CSS中练习悬停和下拉。在下面的代码中,我希望每当下拉子div(带有Home1文本的绿色div)悬停在上面时,的背景色(红色)应该更改为蓝色。 会很感激你的帮助。 null null

  • 我是Java脚本的初学者,我用Java脚本编写了bellow代码,将文本颜色变为红色,但它不起作用,我的代码中有什么错误吗?