Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.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
Java 为按钮添加边框使其更小_Java_Swing_Border_Jbutton - Fatal编程技术网

Java 为按钮添加边框使其更小

Java 为按钮添加边框使其更小,java,swing,border,jbutton,Java,Swing,Border,Jbutton,将边框添加到按钮时,按钮的大小会缩小。我使用以下行添加边框: jButton.setBorder(BorderFactory.createLineBorder(Color.RED)); 这是我的无边框按钮: 这是我的带边框的按钮: 根据需要定义宽度和高度,并执行以下代码行: jButton.setPreferredSize(new Dimension(width, height)); 根据需要定义宽度和高度,并执行以下代码行: jButton.setPreferredSize(new Di

将边框添加到按钮时,按钮的大小会缩小。我使用以下行添加边框:

jButton.setBorder(BorderFactory.createLineBorder(Color.RED));
这是我的无边框按钮:

这是我的带边框的按钮:


根据需要定义宽度和高度,并执行以下代码行:

jButton.setPreferredSize(new Dimension(width, height));

根据需要定义宽度和高度,并执行以下代码行:

jButton.setPreferredSize(new Dimension(width, height));

如果要添加边框,并且还希望在标签文本和边框边缘之间留有边距,请创建一个复合边框,在内侧留一个空边框(边距大小合适),不要设置首选大小。这将允许按钮正确调整自身大小,而不考虑标签的文本和字体。例如:

LineBorder border1 = new LineBorder(Color.red);
EmptyBorder border2 = new EmptyBorder(1,5,1,5);
Border newBorder = BorderFactory.createCompoundBorder(border1, border2);

如果要添加边框,并且还希望在标签文本和边框边缘之间留有边距,请创建一个复合边框,在内侧留一个空边框(边距大小合适),不要设置首选大小。这将允许按钮正确调整自身大小,而不考虑标签的文本和字体。例如:

LineBorder border1 = new LineBorder(Color.red);
EmptyBorder border2 = new EmptyBorder(1,5,1,5);
Border newBorder = BorderFactory.createCompoundBorder(border1, border2);

下面是一个简单的例子,说明为什么
setPreferredSize
是一个糟糕的想法,以及为什么您应该尽可能避免它

您还可以查看更多关于该主题的讨论

导入java.awt.Color;
导入java.awt.Dimension;
导入java.awt.EventQueue;
导入java.awt.Font;
导入java.awt.GridBagConstraints;
导入java.awt.GridBagLayout;
导入java.awt.Insets;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.util.Random;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
导入javax.swing.UIManager;
导入javax.swing.UnsupportedLookAndFeelException;
导入javax.swing.border.CompoundBorder;
导入javax.swing.border.EmptyBorder;
导入javax.swing.border.LineBorder;
公开课考试{
公共静态void main(字符串[]args){
新测试();
}
公开考试(){
invokeLater(新的Runnable(){
@凌驾
公开募捐{
试一试{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(ClassNotFoundException |实例化Exception | IllegalacessException |不支持ookandfeelException ex){
例如printStackTrace();
}
JFrame=新JFrame(“测试”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(newtestpane());
frame.pack();
frame.setLocationRelativeTo(空);
frame.setVisible(true);
}
});
}
公共类TestPane扩展了JPanel{
公共测试窗格(){
JButton goodButton=新JButton(“位置1”);
Insets Insets=goodButton.getInsets();
goodButton.setBorder(新复合边框)(
新线条边框(颜色为红色),
新订单(插图));
setLayout(新的GridBagLayout());
GridBagConstraints gbc=新的GridBagConstraints();
gbc.gridwidth=GridBagConstraints.rements;
gbc.插图=新插图(8,8,8,8);
添加(goodButton,gbc);
JButton badButton=新JButton(“位置2”);
badButton.setPreferredSize(新尺寸(110,29));
badButton.setOrder(新行边框(颜色为红色));
添加(badButton,gbc);
ActionListener=新建ActionListener(){
@凌驾
已执行的公共无效操作(操作事件e){
setText(random());
badButton.setText(random());
浮子尺寸=rnd.nextInt(48)+12;
Font f=goodButton.getFont().deriveFont(大小);
goodButton.setFont(f);
badButton.setFont(f);
}
};
goodButton.addActionListener(listener);
badButton.addActionListener(listener);
}
私有随机rnd=新随机();
受保护的字符串随机(){
整数长度=rnd.nextInt(15)+5;
StringBuilder sb=新StringBuilder(长度);
for(int index=0;index
这是一个夸张的例子,但不幸的是,我继承了一个项目,之前的开发人员使用了
setPreferredSize
,虽然它在运行相同操作系统的相同PC上“正常”运行,但我们遇到了无数看似随机的问题,还有更多问题,甚至没有让我开始了解它在MacOS上所做的事情

但我只为Windows开发


大不了,正如我所说,我们在一些Windows PC上的应用程序运行“正常”,但一旦有人定制了DPI或字体度量,或升级到新版本的Windows,它开始分崩离析-简短回答-不要使用
setPreferredSize

一个简单的例子,说明了为什么
setPreferredSize
是一个糟糕的主意,以及为什么您应该尽可能避免它

您还可以查看更多关于该主题的讨论

导入java.awt.Color;
导入java.awt.Dimension;
导入java.awt.EventQueue;
导入java.awt.Font;
导入java.awt.GridBagConstraints;
导入java.awt.GridBagLayout;
导入java.awt.Insets;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.util.Random;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
导入javax.swing.UIManager;
导入javax.swing.UnsupportedLookAndFeelException;
感应电动机