Живопись на JPanels - PullRequest
       31

Живопись на JPanels

0 голосов
/ 16 марта 2011

Я пишу программу, которая будет простым создателем фигур, я должен представить свою основную панель ShapeMakerPanel вместе с двумя панелями на этой панели controlPanel (которая содержит кнопки для выбора формы и ее очистки,и т. д.) и DrawingArea (где на самом деле рисуются фигуры), но независимо от того, что я делаю, краска не отображается на DrawingArea.Если я просто использую paintComponent и закомментирую add (drawingArea), тогда материал для рисования работает, но на нижнем слое, как я могу рисовать на рисованной области Jpanel.Кроме того, когда я рисую фигуры, у меня может быть только одна фигура за раз, потому что каждый раз, когда я запускаю новую, панель стирается чистой `

    super.paintComponent(g);
    g.setColor(penColor);
    if (p1 != null && p2 != null)
    {
        if (shapeChoice.getSelectedItem().equals("Line"))
        {
            Line line = new Line(p1.x, p1.y, p2.x, p2.y);
            line.draw(g);
        }
    }

Я знаю, что это super.paintComponent (ж) портит меня, но без этого, когда я тащу мышь, она рисует сотни линий.

Если вам было интересно узнать о классе Line, нам нужно было создать класс для каждой фигуры, которую мы нарисовали, метод draw () просто использует координаты линии и помещает их в drawLine ().

Ответы [ 2 ]

1 голос
/ 16 марта 2011

Не переопределяйте paintComponent () в ShapeMakerPanel;переопределите его в классе DrawingArea (если DrawingArea - обычный JPanel, то создайте новый подкласс JPanel).В общем случае вам нужно создать подкласс для компонента, на котором вы собираетесь рисовать.

0 голосов
/ 16 марта 2011

Кроме того, когда я рисую фигуры, у меня может быть только одна фигура за раз, потому что каждый раз, когда я запускаю новую, панель стирается чистой `

Смотрите Индивидуальные подходы к рисованию для решения этой проблемы.

...