gpt4 book ai didi

java - 使用 BorderFactory 创建 TitleBorder 后如何从面板中删除蓝线?

转载 作者:行者123 更新时间:2023-11-29 07:10:13 27 4
gpt4 key购买 nike

我创建了一个 JPanel 并添加了一个带有 BorderFactory 的 TitleBorder,但它在面板周围显示了一条蓝线。我想删除这一行。

有什么建议吗?

谢谢

最佳答案

  • 从未尝试从 TitleBorders API 中提取此值,方法受到保护,或者通过使用 UIManager

  • 必须使用 LineBorder inside TitleBorder

  • 最简单的语法可以是 xxx.setBorder(new TitledBorder(new LineBorder(Color.ORANGE, 1), "label")); 或获取 Color 来自(例如)myPanel.getBackground() 代替 Color.ORANGE

  • 另一个选项是(可能的)

    1. 移动描述(顶部,底部......)

    2. 更改字体

    3. 更改前景(颜色描述)

  • Oracle 教程中的更多选项和说明 How to Use Borders (复合边框)

例如

enter image description here

import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.LineBorder;
import javax.swing.border.TitledBorder;

public class AddComponentsAtRuntime {

private JFrame f;
private JPanel panel;
private JCheckBox checkValidate, checkReValidate, checkRepaint, checkPack;

public AddComponentsAtRuntime() {
JButton b = new JButton();
b.setBackground(Color.red);
b.setBorder(new LineBorder(Color.black, 2));
b.setPreferredSize(new Dimension(600, 10));
panel = new JPanel(new GridLayout(0, 1));
panel.add(b);
panel.setBorder(new TitledBorder(new LineBorder(Color.ORANGE, 1),
"Add Components At Runtime"));
f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(panel, "Center");
f.add(getCheckBoxPanel(), "South");
f.setLocation(200, 200);
f.pack();
f.setVisible(true);
}

private JPanel getCheckBoxPanel() {
checkValidate = new JCheckBox("validate");
checkValidate.setSelected(false);
checkReValidate = new JCheckBox("revalidate");
checkReValidate.setSelected(false);
checkRepaint = new JCheckBox("repaint");
checkRepaint.setSelected(false);
checkPack = new JCheckBox("pack");
checkPack.setSelected(false);
JButton addComp = new JButton("Add New One");
addComp.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
JButton b = new JButton();
b.setBackground(Color.red);
b.setBorder(new LineBorder(Color.black, 2));
b.setPreferredSize(new Dimension(600, 10));
panel.add(b);
makeChange();
System.out.println(" Components Count after Adds :" + panel.getComponentCount());
}
});
JButton removeComp = new JButton("Remove One");
removeComp.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
int count = panel.getComponentCount();
if (count > 0) {
panel.remove(0);
}
makeChange();
System.out.println(" Components Count after Removes :" + panel.getComponentCount());
}
});
JPanel panel2 = new JPanel();
panel2.add(checkValidate);
panel2.add(checkReValidate);
panel2.add(checkRepaint);
panel2.add(checkPack);
panel2.add(addComp);
panel2.add(removeComp);
return panel2;
}

private void makeChange() {
if (checkValidate.isSelected()) {
panel.validate();
}
if (checkReValidate.isSelected()) {
panel.revalidate();
}
if (checkRepaint.isSelected()) {
panel.repaint();
}
if (checkPack.isSelected()) {
f.pack();
}
}

public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {

public void run() {
AddComponentsAtRuntime makingChanges = new AddComponentsAtRuntime();
}
});
}
}

关于java - 使用 BorderFactory 创建 TitleBorder 后如何从面板中删除蓝线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14606206/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com