@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) ?
  • Вопрос задан
  • 31 просмотр
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
BostonGene Москва
от 100 000 до 200 000 руб.
Digital Horizon Москва
от 150 000 руб.
Sidenis Томск
До 170 000 руб.