Добавление овала в JPanel (paintComponent) - PullRequest
0 голосов
/ 12 января 2011

В макете с вложенным JPanel я хочу добавить нарисованный овал.

Для этого я использую следующее:

@Override
public void paintComponent(Graphics g)
{
    super.paintComponent(g);

    g.setColor(Color.GRAY);
    g.fillOval(20, 20, 20, 20);
}

Теперь в одной из моих панелей я хочу добавить этоовальный, но я не могу добавить это.

JPanel myPanel = new JPanel();
myPanel.setLayout(new GridLayout(0, 2));
//myPanel.add(...); here i wish to add the drawn oval

Любой вклад приветствуется!

Ответы [ 3 ]

2 голосов
/ 12 января 2011

Вы используете mypanel.add (...) для других элементов графического интерфейса.Овал, который вы хотите нарисовать, будет объектом java2d, который вам нужно будет нарисовать на панели.Для этого вы должны переопределить метод paint () панели с кодом, который вы опубликовали выше.

2 голосов
/ 12 января 2011

Способ сделать это состоит в том, чтобы иметь подкласс JComponent, который делает чертеж, который вы хотите, а затем добавить его в макет.

class OvalComponent extends JComponent {
    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.setColor(Color.GRAY);
        g.fillOval(20, 20, 20, 20);
    }
}

В вашем коде построения GUI вы можете иметь это:

JPanel panel = new JPanel(new GridLayout(0, 2));
panel.add(new OvalComponent());
0 голосов
/ 04 декабря 2017
 JPanel panel = new JPanel() {
    @Override
    public void paint(Graphics g) {
        g.drawRect(100, 100, 100, 100);
    }
 };

Вы переопределяете собственный метод в классе JPanel, который позволяет пользователям добавлять в него компоненты рисования.С этим вы можете добавить все ваши обычные графические данные, и они будут отображаться.Эта строка кода должна создать квадрат с координатами (100, 100) относительно верхнего левого угла панели.

...