@mr_firuzinho

Как правильно нарисовать на Jpanel?

Здравствуйте, у меня есть главное окно(MainFrame), где меню, таблица и т.д, и есть свободное место, куда размещено пустой JPANEL(MainDrawPanel), я хочу туда нарисовать фигуры.

У меня есть код, который я уже подготовил, но у меня получается рисовать только в новом окне, JFRAME:
public class MainFrame extends javax.swing.JFrame {
. . .  
private void metName () {
class MyPanel extends JPanel {
            @Override
            protected void paintComponent(Graphics g) {
                super.paintComponent(g);
                g.drawString("Contours: " + contours.size(), 20, 20);

                for (Contour c : contours) {
                    System.out.println(c.getArea());
                    int gg = rnd.nextInt(250);
                    int r = rnd.nextInt(250);
                    int B = rnd.nextInt(250);
                    g.setColor(new Color(0, 0, 0));

                    ListIterator<Point_dt> itr = c.points.listIterator();
                    Point_dt a = itr.next();//throws Exception if points size = 0

                    while (a != null && itr.hasNext()) {
                        Point_dt b = itr.next();
                        
                        g.drawLine((int) a.x, (int) a.y, (int) b.x, (int) b.y);
                       //g.drawString("(" + a.x + ", " + a.y + ") ", (int)a.x, (int)a.y);
                        //g.drawString("(" + b.x + ", " + b.y + ") ", (int)b.x, (int)b.y);
                        g.fillOval((int) a.x, (int) a.y, 4, 4);
                        g.fillOval((int) b.x, (int) b.y, 4, 4);
                        a = b;
                    }
                }
            }
        }

        JFrame frame = new JFrame("Рисунок");
        JPanel viewer = new MyPanel();
      
        frame.getContentPane().add(viewer);
        frame.setSize(new Dimension(900, 780));
        frame.setVisible(true);
}
. . .
}


Этот код работает, но он рисует на отдельном окне, как мне заставить его работать в главном окне (MainFrame), на пустом JPANEL(mainDrawPanel) ?
  • Вопрос задан
  • 50 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
TEAMIDEA Тверь
от 70 000 до 120 000 руб.
Health Gorilla Москва
от 190 000 руб.
До 150 000 руб.
19 июн. 2019, в 15:48
300 руб./в час
19 июн. 2019, в 15:18
100000 руб./за проект
19 июн. 2019, в 14:39
10000 руб./за проект