(Java) 我所有的按钮周围都有白色边框
(Java) There are white borders around all my buttons
在 java 中,我的按钮周围环绕着白色的粗边框,这些边框只有在 jlabel
中有图像作为背景时才会出现。
示例:
这里的问题是我所有的按钮周围都有白色边框,看起来很糟糕。预期用途是让按钮仅覆盖图像,如下图:
这是我的代码:
public class Gui extends JFrame {
private JTextField TextField;
private JButton Hi, Bye, Exit;
private JPanel Panel, Panel1, Panel2;
private JLabel label;
public Gui() {
super("My Program");
TextField = new JTextField("");
TextField.setEditable(false);
Hi = new JButton("Hi");
Bye = new JButton("Bye");
Exit = new JButton("Exit");
Actions a = new Actions();
Hi.addActionListener(a);
Bye.addActionListener(a);
Exit.addActionListener(a);
Dimension tfd = new Dimension(780, 25);
Dimension bd = new Dimension (75, 25);
Dimension lpd = new Dimension (800, 600);
TextField.setPreferredSize(tfd);
Hi.setPreferredSize(bd);
Bye.setPreferredSize(bd);
Exit.setPreferredSize(tfd);
ImageIcon image = new ImageIcon("C:/Users/Dakota/Desktop/Coding/Coding/img/Background.png");
label = new JLabel(image);
Panel = new JPanel();
this.setContentPane(label);
this.add(Panel);
this.setLayout(new FlowLayout());
Panel.add(TextField);
Panel1 = new JPanel();
this.add(Panel1);
Panel1.add(Hi);
Panel1.add(Bye);
Panel2 = new JPanel();
this.add(Panel2);
Panel2.add(Exit);
}
您的问题似乎是您将 JPanel 添加到 GUI 而没有更改不透明 属性。此 属性 默认为 true,这意味着 JPanel 将绘制一个背景,在视觉上覆盖其下方的任何内容,但如果您通过调用 myPanel.setOpaque(false);
将其设置为 false,则 JPanel 下方的任何组件都将显示通过。这对于大多数 Swing 组件都是正确的,尽管对于 JScrollPanes 和 JTextComponents 等组件组件来说并不是很简单。
在 java 中,我的按钮周围环绕着白色的粗边框,这些边框只有在 jlabel
中有图像作为背景时才会出现。
示例:
这里的问题是我所有的按钮周围都有白色边框,看起来很糟糕。预期用途是让按钮仅覆盖图像,如下图:
这是我的代码:
public class Gui extends JFrame {
private JTextField TextField;
private JButton Hi, Bye, Exit;
private JPanel Panel, Panel1, Panel2;
private JLabel label;
public Gui() {
super("My Program");
TextField = new JTextField("");
TextField.setEditable(false);
Hi = new JButton("Hi");
Bye = new JButton("Bye");
Exit = new JButton("Exit");
Actions a = new Actions();
Hi.addActionListener(a);
Bye.addActionListener(a);
Exit.addActionListener(a);
Dimension tfd = new Dimension(780, 25);
Dimension bd = new Dimension (75, 25);
Dimension lpd = new Dimension (800, 600);
TextField.setPreferredSize(tfd);
Hi.setPreferredSize(bd);
Bye.setPreferredSize(bd);
Exit.setPreferredSize(tfd);
ImageIcon image = new ImageIcon("C:/Users/Dakota/Desktop/Coding/Coding/img/Background.png");
label = new JLabel(image);
Panel = new JPanel();
this.setContentPane(label);
this.add(Panel);
this.setLayout(new FlowLayout());
Panel.add(TextField);
Panel1 = new JPanel();
this.add(Panel1);
Panel1.add(Hi);
Panel1.add(Bye);
Panel2 = new JPanel();
this.add(Panel2);
Panel2.add(Exit);
}
您的问题似乎是您将 JPanel 添加到 GUI 而没有更改不透明 属性。此 属性 默认为 true,这意味着 JPanel 将绘制一个背景,在视觉上覆盖其下方的任何内容,但如果您通过调用 myPanel.setOpaque(false);
将其设置为 false,则 JPanel 下方的任何组件都将显示通过。这对于大多数 Swing 组件都是正确的,尽管对于 JScrollPanes 和 JTextComponents 等组件组件来说并不是很简单。