1

を使用しましたが、設定JPanelJFrame色を白にするのに問題がありますpanel.setBackground(Color.white)。2番目の問題はImageIconJRadioButtonコンストラクターでの設定が原因でJRadioButton見えないことです。これが私のコードです:

public class proby {

    static JPanel panel = new JPanel();
    static JPanel panel2 = new JPanel();

    private void createAndShowGUI() {
        final ImageIcon zielonaikona = new ImageIcon("green2.png");
        final ImageIcon czerwonaikona = new ImageIcon("red2.png");
        final ImageIcon niebieskaikona = new ImageIcon("blue.png");
        final ImageIcon szaraikona = new ImageIcon("grey.png");
        JFrame frame1 = new JFrame("MasterMind");
        final JRadioButton zielony = new JRadioButton(zielonaikona);
        zielony.setBackground(Color.WHITE);
        final JRadioButton czerwony = new JRadioButton("czerwony");
        czerwony.setBackground(Color.white);
        final JRadioButton niebieski = new JRadioButton("niebieski");
        niebieski.setBackground(Color.white);
        final JRadioButton szary = new JRadioButton("szary");
        szary.setBackground(Color.white);
        zielony.setSelected(true);
        ButtonGroup gruparadio = new ButtonGroup();
        gruparadio.add(zielony);
        gruparadio.add(czerwony);
        gruparadio.add(niebieski);
        gruparadio.add(szary);
        frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JButton akceptuj = new JButton("Akceptuj");

        akceptuj.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                JLabel label2;
                if (zielony.isSelected()) {
                    label2 = new JLabel(zielonaikona);
                } else if (czerwony.isSelected()) {
                    label2 = new JLabel(czerwonaikona);
                } else if (szary.isSelected()) {
                    label2 = new JLabel(szaraikona);
                } else {
                    label2 = new JLabel(niebieskaikona);
                }
                panel2.add(label2);
                panel2.revalidate();
            }
        });

        BoxLayout layout = new BoxLayout(panel, BoxLayout.Y_AXIS);
        BoxLayout layout2 = new BoxLayout(panel2, BoxLayout.Y_AXIS);
        panel.setLayout(layout);
        panel2.setLayout(layout2);
        panel.add(zielony);
        panel.add(czerwony);
        panel.add(niebieski);
        panel.add(szary);
        panel.add(akceptuj);
        panel.setBackground(Color.WHITE);
        panel2.setBackground(Color.white);
        frame1.getContentPane().add(panel);
        frame1.getContentPane().add(panel2);
        BoxLayout layout3 = new BoxLayout(frame1.getContentPane(), BoxLayout.Y_AXIS);
        frame1.setLayout(layout3);
        frame1.setBackground(Color.white);
        frame1.setSize(300, 300);
        frame1.setVisible(true);
    }

    public static void main(String[] args) {
        proby kk = new proby();
        kk.createAndShowGUI();
    }
}
4

2 に答える 2

3

JFrame背景色を白に設定したい場合は、 を取得しContentPaneて白に設定する必要があります。

frame1.getContentPane().setBackground(Color.white);

JFrame.setBackground() が機能しないのを見てください— なぜですか?

問題についてはImageIcon、おそらく、指定したパスに画像ファイルがないことが原因です。(あなたの場合はプロジェクトフォルダーのすぐ中にあります)。

編集: で何をしようとしているのかがわかったので、 Andrew Thompson のトリックImageIconを見て、これを思いつきました

String imageText = "<html><img src=\""+this.getClass().getResource("green2.png")
            .toString()+"\"></img></html>";
JRadioButton zielony = new JRadioButton(imageText);

srcただし、プロジェクトではなく、フォルダー内に画像を配置する必要があります。

于 2012-12-29T21:09:08.913 に答える
3

JRadioButtonの穴のない画像しか見えません。

外観は、 のサブクラスであるルック アンド フィール依存の UI デリゲートによって制御されButtonUIます。独自の置換を作成する手短に、ここにある を使用して、穴の有無にかかわらず、ボタンを好きなようにレンダリングできますColorIconその後、ここに示すを使用してアイコンを更新できます。setIcon()

Icon czerwonaikona = new ColorIcon(SIZE, Color.red);
JRadioButton czerwony = new JRadioButton("czerwony", czerwonaikona);
于 2012-12-29T21:40:23.077 に答える