M.E*_*.E. 3 java swing border jbutton
我想在 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();
}
}
Run Code Online (Sandbox Code Playgroud)
这会生成两个按钮,在 button2 组件上我尝试更改边框颜色但它删除了填充。无论如何要保留标准 JButton 的原始插图并更改颜色?
注意:我假设在分配新边框时正在删除插图。但我不是 100% 确定。
LineBorder使用 a代替创建a 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)));
Run Code Online (Sandbox Code Playgroud)
我拿了BorderInsetsfor ,button1所以他们两个都有相同的大小。
我的回答基于@MadProgrammer 对这个问题的回答
顺便说一句,不要扩展JFrame,而是创建它的一个实例,如果你真的需要扩展一个组件,无论是JPanel:扩展 JFrame 还是在程序中创建它
也不要忘记打电话
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Run Code Online (Sandbox Code Playgroud)
在您的JFrame实例上,以便您的程序在您关闭时终止。
而且您也错过了将您的程序放在 EDT 上的机会,请在此答案中查看更多内容
| 归档时间: |
|
| 查看次数: |
751 次 |
| 最近记录: |