1

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);
4

2 に答える 2

4

境界線を気にしない場合は、[設定] タブ パネル内に JPanel を追加できます。この JPanel では、BorderLayout を使用して別の JPanel を追加します。BorderLayout のあるものの内側に 2 つの JPanel を追加します。北のパネルは背景が黄色で、中央のパネルは背景が赤です。「タイトル」という JLabel を黄色の JPanel に追加し、コントロールを赤色の JPanel に追加するだけです。

ラベルの周りのこの赤い枠はなくなりました。

以下は、境界線のない Nimbus ルック アンド フィールの例です。

サンプル...

于 2012-05-04T12:34:40.610 に答える
2

実際、これは答えではありませんが、コメント内の画像は不可能です...

私はこのコードを試しました:

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();
    }

}

結果は

ここに画像の説明を入力

于 2012-05-04T12:56:41.393 に答える