-2

このプロパティで JButton を設定します: - borderPainted を false に - contentAreaFilled を false に - 境界を null に - opaque を false に

ボタンをクリックした後、背景が黒くなるか、黒くフェードアウトしますが、なぜですか..何か提案はありますか!? (どうも)

4

1 に答える 1

4

透明なボタンを作成したい場合は、 を呼び出すのではなくsetContentAreaFilled(false)javadocを参照してください(javadoc の最後の行がルック アンド フィールによって異なることを示唆していることに注意してください)。setOpaque

contentAreaFilled プロパティを設定します。true の場合、ボタンはコンテンツ領域を描画します。たとえば、アイコンのみのボタンなど、透明なボタンが必要な場合は、これを false に設定する必要があります。 setOpaque(false) を呼び出さないでください。contentAreaFilled プロパティのデフォルト値は true です。

この関数により、コンポーネントの opaque プロパティが変更される場合があります。

この関数を呼び出す正確な動作は、コンポーネントごと、および L&F ごとに異なります。

テキストが「必要なだけ」(ボーダーなし) の場合は、 を呼び出すことができますsetBorder(null)


例:

...境界線も背景もありません(「押された」背景もありません)。unity/ubuntu などのデフォルトのルック アンド フィールでテスト済みMetalLookAndFeel

public static void main(String... args) {

    JButton button = new JButton(new AbstractAction("Button") {
        @Override
        public void actionPerformed(ActionEvent arg0) {
            // Printout to verify that the button was actually pressed
            // since no visual output is shown... :)
            System.out.println("Clicked");
        }
    });
    
    button.setContentAreaFilled(false);
    button.setBorder(null);
    
    JFrame frame = new JFrame("Test");
    frame.setLayout(new FlowLayout());
    frame.add(button);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(400, 300);
    frame.setVisible(true);
}
于 2012-07-02T22:48:03.807 に答える