如何删除 jtextfield、jbutton 和 raisedbevel 边框之间的 space
how to remove space between jtextfield, jbutton and raisedbevel border
我想删除在 raisedbevel
边框内添加的 JButton
和 JTextfield
之间的空白 space 或边框 space
我试过这段代码,但它们之间仍然存在差距
import java.awt.*;
import javax.swing.*;
import javax.swing.border.Border;
public class Main {
public static void main(String args[]) {
JFrame f = new JFrame("JPasswordField ");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel p=new JPanel(),pp=new JPanel();
JButton b=new JButton("o");
b.setBorder(null);
b.setBorderPainted(false);
b.setMargin(new Insets(0,0,0,0));
Border emptyBorder = BorderFactory.createEmptyBorder();
b.setBorder(emptyBorder);
Border raisedbevel=BorderFactory.createRaisedBevelBorder();
pp.setBorder(raisedbevel);
JTextField t=new JTextField(20);
t .setBorder(javax.swing.BorderFactory.createEmptyBorder());
t.setPreferredSize(new Dimension(100, 25));
b.setPreferredSize(new Dimension(25, 25));
pp.setBackground(Color.black);
pp.add(t);
pp.add(b);
p.add(pp);
f.add(p);
f.setSize(400, 100);
f.setVisible(true);
}
}
我想彻底去除那个黑色 space
谢谢。
JPanel
默认使用 FlowLayout
,默认情况下垂直和水平使用 5
的填充。
如果您想继续使用 FlowLayout
,您可以使用类似...
的方式指定您想要的填充
pp = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 0);
或使用其他布局管理器,例如 GridBagLayout
我也不鼓励您普遍使用 setPreferredSize
并依赖 Border
和布局来影响组件的 "extra" 大小可能超出其默认首选大小
看看Laying Out Components Within a Container, How to Use FlowLayout, How to Use GridBagLayout and Should I avoid the use of set(Preferred|Maximum|Minimum)Size methods in Java Swing?
我想删除在 raisedbevel
边框内添加的 JButton
和 JTextfield
之间的空白 space 或边框 space
我试过这段代码,但它们之间仍然存在差距
import java.awt.*;
import javax.swing.*;
import javax.swing.border.Border;
public class Main {
public static void main(String args[]) {
JFrame f = new JFrame("JPasswordField ");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel p=new JPanel(),pp=new JPanel();
JButton b=new JButton("o");
b.setBorder(null);
b.setBorderPainted(false);
b.setMargin(new Insets(0,0,0,0));
Border emptyBorder = BorderFactory.createEmptyBorder();
b.setBorder(emptyBorder);
Border raisedbevel=BorderFactory.createRaisedBevelBorder();
pp.setBorder(raisedbevel);
JTextField t=new JTextField(20);
t .setBorder(javax.swing.BorderFactory.createEmptyBorder());
t.setPreferredSize(new Dimension(100, 25));
b.setPreferredSize(new Dimension(25, 25));
pp.setBackground(Color.black);
pp.add(t);
pp.add(b);
p.add(pp);
f.add(p);
f.setSize(400, 100);
f.setVisible(true);
}
}
我想彻底去除那个黑色 space 谢谢。
JPanel
默认使用 FlowLayout
,默认情况下垂直和水平使用 5
的填充。
如果您想继续使用 FlowLayout
,您可以使用类似...
pp = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 0);
或使用其他布局管理器,例如 GridBagLayout
我也不鼓励您普遍使用 setPreferredSize
并依赖 Border
和布局来影响组件的 "extra" 大小可能超出其默认首选大小
看看Laying Out Components Within a Container, How to Use FlowLayout, How to Use GridBagLayout and Should I avoid the use of set(Preferred|Maximum|Minimum)Size methods in Java Swing?