[英]Remove space around title in TitledBorder
如何在TitledBorder中删除标题周围的空格? 我的意思是这个红色边框
一段代码:
Font f = new Font(Font.DIALOG, Font.PLAIN, 14);
Map m = f.getAttributes();
m.put(TextAttribute.BACKGROUND, Color.yellow);
Font ff = new Font(m);
Border mb = BorderFactory.createMatteBorder(20, 0, 0, 0, Color.yellow);
Border test = BorderFactory.createEmptyBorder(-2,-2,-2,-2);
Border mb6 = BorderFactory.createTitledBorder(mb, "Title", TitledBorder.CENTER, TitledBorder.TOP, ff, Color.DARK_GRAY);
mb6 = BorderFactory.createCompoundBorder(test, mb6);
Border mb2 = BorderFactory.createMatteBorder(1, 0, 0, 0, Color.gray);
mb2 = BorderFactory.createCompoundBorder(test,mb2);
Border mb3 = BorderFactory.createCompoundBorder(mb6, mb2);
Border mb4 = BorderFactory.createMatteBorder(1, 1, 1, 1, Color.gray);
Border mb5 = BorderFactory.createCompoundBorder(mb4, mb3);
modeSetPanel.setBackground(Color.red);
modeSetPanel.setBorder(mb5);
如果您不关心边框,则可以在“设置”选项卡面板中添加一个JPanel。 在此JPanel中,使用BorderLayout添加另一个。 在带有BorderLayout的一个内部添加两个JPanels:北一个具有黄色背景,中间一个具有红色背景。 只需在黄色的JPanel上添加一个标有“ Title”的JLabel,并在红色的JPanel上添加控件。
标签周围的红色边框消失了。
这是一个无边界且具有Nimbus外观的示例:
实际上这不是答案,但是注释中的图像是不可能的...
我尝试了这段代码:
import java.awt.Color;
import java.awt.Font;
import java.awt.font.TextAttribute;
import java.util.Map;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.Border;
import javax.swing.border.TitledBorder;
public class RedBorderProblem extends JFrame {
public RedBorderProblem() {
final JPanel modeSetPanel = new JPanel();
final Font f = new Font( Font.DIALOG, Font.PLAIN, 14 );
final Map m = f.getAttributes();
m.put( TextAttribute.BACKGROUND, Color.yellow );
final Font ff = new Font( m );
final Border mb = BorderFactory.createMatteBorder( 20, 0, 0, 0, Color.yellow );
final Border test = BorderFactory.createEmptyBorder( -2, -2, -2, -2 );
Border mb6 = BorderFactory.createTitledBorder( mb, "Title", TitledBorder.CENTER, TitledBorder.TOP, ff,
Color.DARK_GRAY );
mb6 = BorderFactory.createCompoundBorder( test, mb6 );
Border mb2 = BorderFactory.createMatteBorder( 1, 0, 0, 0, Color.gray );
mb2 = BorderFactory.createCompoundBorder( test, mb2 );
final Border mb3 = BorderFactory.createCompoundBorder( mb6, mb2 );
final Border mb4 = BorderFactory.createMatteBorder( 1, 1, 1, 1, Color.gray );
final Border mb5 = BorderFactory.createCompoundBorder( mb4, mb3 );
modeSetPanel.setBackground( Color.red );
modeSetPanel.setBorder( mb5 );
this.add( modeSetPanel );
this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
this.pack();
this.setVisible( true );
}
public static void main( final String[] args ) {
new RedBorderProblem();
}
}
结果是
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.