gpt4 book ai didi

java - 在保留插图的 Java Swing 中更改 JButton 的边框颜色

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:00:12 35 4
gpt4 key购买 nike

我想在 Java Swing 中更改 JButton 组件的边框颜色。

我尝试了以下方法:

package com.example.test;

import java.awt.Color;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class Test extends JFrame {

public Test() {

JPanel panel = new JPanel();
JButton button1 = new JButton("Test Button 1");
JButton button2 = new JButton("Test Button 2");
button2.setBorder(BorderFactory.createLineBorder(Color.RED));

panel.add(button1);
panel.add(button2);

this.add(panel);


setSize(400, 400);
setVisible(true);

}

public static void main(String[] args) {

try {
UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName() );
} catch (ClassNotFoundException ex) {
Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
} catch (UnsupportedLookAndFeelException ex) {
Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
}
Test t = new Test();
}
}

这会生成两个按钮,在 button2 组件上我尝试更改边框颜色但它删除了填充。无论如何,是否可以保留标准 JButton 的原始插图并仅更改颜色?

注意:我假设在分配新边框时删除了插图。但我对此不是 100% 确定。

JButton Change Border Color

最佳答案

不创建 LineBorder,而是使用 CompoundBorder:

button2.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createLineBorder(Color.RED, 1),
BorderFactory.createEmptyBorder(
button1.getBorder().getBorderInsets(button1).top,
button1.getBorder().getBorderInsets(button1).left,
button1.getBorder().getBorderInsets(button1).bottom,
button1.getBorder().getBorderInsets(button1).right)));

我为 button1 使用了 BorderInsets,因此它们的大小相同。

我的回答是基于@MadProgrammer 对 this question 的回答

enter image description here


顺便说一句,不要扩展 JFrame,而是创建它的一个实例,如果您真的需要扩展一个组件,可以是 JPanel:Extends JFrame vs. creating it inside the program

别忘了打电话

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

在您的 JFrame 实例上,以便您的程序在您关闭时终止。

而且您还错过了将您的程序放在 EDT 上,请在 this answer 上查看更多信息

关于java - 在保留插图的 Java Swing 中更改 JButton 的边框颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56157666/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com