Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaSwing中更改JButton的边框颜色,保留插入_Java_Swing_Border_Jbutton - Fatal编程技术网

在JavaSwing中更改JButton的边框颜色,保留插入

在JavaSwing中更改JButton的边框颜色,保留插入,java,swing,border,jbutton,Java,Swing,Border,Jbutton,我想在JavaSwing中更改JButton组件的边框颜色 我尝试了以下方法: package com.example.test; 导入java.awt.Color; 导入java.util.logging.Level; 导入java.util.logging.Logger; 导入javax.swing.BorderFactory; 导入javax.swing.JButton; 导入javax.swing.JFrame; 导入javax.swing.JPanel; 导入javax.swing.U

我想在JavaSwing中更改JButton组件的边框颜色

我尝试了以下方法:

package com.example.test;
导入java.awt.Color;
导入java.util.logging.Level;
导入java.util.logging.Logger;
导入javax.swing.BorderFactory;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
导入javax.swing.UIManager;
导入javax.swing.UnsupportedLookAndFeelException;
公共类测试扩展了JFrame{
公开考试(){
JPanel面板=新的JPanel();
JButton button1=新JButton(“测试按钮1”);
JButton button2=新JButton(“测试按钮2”);
button2.setOrder(BorderFactory.createLineBorder(Color.RED));
面板。添加(按钮1);
面板。添加(按钮2);
本条添加(面板);
设置大小(400400);
setVisible(真);
}
公共静态void main(字符串[]args){
试一试{
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
}捕获(ClassNotFoundException ex){
Logger.getLogger(Test.class.getName()).log(Level.SEVERE,null,ex);
}catch(实例化异常){
Logger.getLogger(Test.class.getName()).log(Level.SEVERE,null,ex);
}捕获(非法访问例外){
Logger.getLogger(Test.class.getName()).log(Level.SEVERE,null,ex);
}捕获(无支持的LookandFeelexception ex){
Logger.getLogger(Test.class.getName()).log(Level.SEVERE,null,ex);
}
测试t=新测试();
}
}
这将生成两个按钮,在button2组件上,我尝试更改边框颜色,但它删除了填充。是否有任何方法可以保留标准JButton的原始插图,只需更改颜色

注意:我假设在指定新边框时,插图被删除。但我不是100%确定


不要创建
线条边框
,而是使用
复合边框

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)));
我将
按钮1的
边框插入项
,使它们的大小相同

我的答案基于@MadProgrammer answer for


顺便说一句,不要扩展
JFrame
,而是创建它的一个实例,如果您真的需要扩展一个组件,可以是
JPanel

也别忘了打电话

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
在您的
JFrame
实例上,这样当您关闭程序时,程序就会终止


此外,您还错过了将您的课程放在EDT上的机会,请在

上查看更多内容,谢谢您的回答和附带的评论/建议。这很有帮助。