почему панель не выводится на экран

350
28 февраля 2017, 15:44
field = new JPanel();
        field.setBounds(0, 26, 434, 205);
        contentPane.add(field);
        for (int i = 0; i < 100; i++) {
            panel1 = new JPanel();
            panel1.setBackground(rightcolor1);
            int x1 = randomRange(1, 453);
            int y1 = randomRange(1, 306);
            panel1.setBounds(x1, y1, a, a);
            field.add(panel1);
            for (Component panel1 : field.getComponents() ){ 
                int x = x1 + randomRange(-2, 2); 
                int y = y1 + randomRange(-2, 2); 
                panel1.setLocation(x, y); 
                panel1.setSize(a, a);
                }

            field.setComponentZOrder(panel1, 0);
            panel1.addMouseListener(new MouseAdapter() {
                @Override
                public void mouseClicked(MouseEvent arg) {
                    if(arg.getButton() != MouseEvent.BUTTON3) return;
                    field.remove(panel1);
                    field.updateUI();
                }
        });
        }
        for (int i = 0; i < 100; i++) {
        panel2 = new JPanel();
        panel2.setBackground(wrongcolor1);
        int x2 = randomRange(1, 453);
        int y2 = randomRange(1, 306);
        panel2.setBounds(x2, y2, a, a);
        field.add(panel2);
        for (Component panel2 : field.getComponents() ){ 
            int f = x2 + randomRange(-2, 2); 
            int q = y2 + randomRange(-2, 2); 
            panel2.setLocation(f, q); 
            panel2.setSize(a, a);
            }

        field.setComponentZOrder(panel2, 0);
        field.updateUI();
        field.setComponentZOrder(panel2, 0);    
        panel2.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent arg) {
                if(arg.getButton() != MouseEvent.BUTTON3) return;
                String s = "Ты проиграл!";
                JLabel lose = new JLabel(s);
                lose.setForeground(Color.RED);
                lose.setFont(new Font("Tahoma", Font.PLAIN, 25));
                lose.setHorizontalAlignment(SwingConstants.CENTER);
                lose.setBounds(0, 66, 434, 114);
                field.add(lose);
                field.removeAll();
                field.updateUI();
            }
    });
Answer 1

field должен быть добавлен в объект класса JWindow или JFrame, которому необходимо задать границы и включить видимость. Сама по себе JPanel отрисовываться не будет.

READ ALSO
Java: блок внутри функции, его польза

Java: блок внутри функции, его польза

Доброго времени сутокСобственно, вопрос в том, какой практический смысл конструкции, когда выделяется блок внутри метода

214
Как дать Label-у имя, используя код?

Как дать Label-у имя, используя код?

Можно ли в java переименовать Label, прописав это в коде самостоятельно?

252
Не удаляются контролы, созданные в цикле

Не удаляются контролы, созданные в цикле

Путем цикла я создала меткиМне нужно, чтобы, когда я кликну на них мышкой, они исчезали

202
Я хочу отображать на экране файлы, которые были созданы time или менее минут назад, и папки их содержащие.

Я хочу отображать на экране файлы, которые были созданы time или менее минут назад, и папки их содержащие.

В эмуляторе все работает как надо, однако на реальных устройствах появляется куча давно созданных файловНе подскажете, почему так происходит?

223