4

JButtonMacでEclipseを使ってGUIを設計していて、設定したアイコンだけを表示するようにしたいです。Mac OS では問題ないように見えますが、それを jar ファイルにエクスポートし、Windows OS で轍を付けると、JButton次のようになります。

ここに画像の説明を入力

ボーダーはすべてEmptyBorderです。

私は何を間違えましたか?奥の四角を消すにはどうしたらいいですか?

4

2 に答える 2

10

この質問に正しく答えるには、SSCCEが必要になる可能性が高くなります。setContentAreaFilled(false)とにかく、JButtonインスタンスで呼び出したいと思うでしょう。これにより、「正方形」が効果的に削除されます。

ただし、この関数を呼び出す正確な動作は、コンポーネントごと、および L&F ごとに異なることに注意することが重要です。


import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;

public final class JButtonDemo {
    public static void main(String[] args){
        SwingUtilities.invokeLater(new Runnable(){
            @Override
            public void run() {
                createAndShowGUI();             
            }
        });
    }

    private static void createAndShowGUI(){
        final JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(new JIconButton());
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    private static final class JIconButton extends JButton{
        private static final long serialVersionUID = 7274140930080397481L;

        public JIconButton(){
            super(UIManager.getIcon("OptionPane.informationIcon"));
            setContentAreaFilled(false);
            setFocusPainted(false);
            setBorder(BorderFactory.createEmptyBorder());
        }
    }
}

ここに画像の説明を入力

于 2011-10-05T11:52:18.740 に答える
2

1)それを再現することはできません。そのために書いたコードを見ずに言うのは難しいです。

2) XxxButtonUI に触れたため、これは実際にはネイティブ OS 関連の問題であり、そのためにルック アンド フィールが使用されています。

3) MetalButtonUI をオーバーライドするとどうなりますか?

4)半透明の背景がありますか、またはいくつかの色がありますか、または ...

于 2011-10-05T11:36:39.850 に答える