不能设置JPanel的色彩和一个JRadioButton隐形(can't set JPane

2019-10-17 13:29发布

我有问题,设置JPanelJFrame颜色为白色,但我用panel.setBackground(Color.white) 第二个问题是,设置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();
    }
}

Answer 1:

如果你想你的设置JFrame背景颜色为白色,你必须得到ContentPane并将其设置为白色:

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

看看JFrame.setBackground()不工作-为什么?

至于ImageIcon问题,这可能是因为你没有在您指定的路径中的图像文件。 (在你的情况仅仅是项目文件夹内)。

编辑:现在,我知道你想与做ImageIcon ,我想出了这个后看到安德鲁·汤普森的把戏

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

但是,它确实涉及您放置图像内src文件夹,而不是项目之一。



Answer 2:

只有图像中可见,且不JRadioButton的孔。

外观是通过查找控制和感觉依赖UI代理,的一个子类ButtonUI 。 短写自己更换,你可以使用ColorIcon ,看到这里 ,呈现按钮,只要你喜欢,有或没有孔。 然后,您可以更新使用图标setIcon() ,显示在这里 。

Icon czerwonaikona = new ColorIcon(SIZE, Color.red);
JRadioButton czerwony = new JRadioButton("czerwony", czerwonaikona);


文章来源: can't set JPanel color and JRadioButton invisibility