У меня проблема с созданием внутреннего класса, который расширяется от JPanel для рисования на нем чего-либо. Я переопределил метод paintComponent, и все, что я выбрал для рисования, работает нормально, но использование другого метода для рисования не работает.
Вот мой внутренний код класса:
private class Plot extends JPanel {
public Plot() {
this.setBackground(Color.WHITE);
}
@Override
public void paintComponent(Graphics graphic) {
super.paintComponent(graphic);
Graphics2D graphic2d = (Graphics2D) graphic;
graphic2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
graphic2d.drawOval(0, 0, this.getWidth() - 1, this.getHeight() - 1);
}
public void drawTitle(final String title) {
Graphics2D graphic2d = (Graphics2D) this.getGraphics();
graphic2d.setColor(Color.red);
graphic2d.drawString(title, 1, 10);
}
}
Обратите внимание на метод drawTitle. Я просто хочу, чтобы пользовательский текст был показан. В моем внешнем классе, который расширяется от JFrame, я создаю экземпляр этого внутреннего класса следующим образом:
private Plot plot;
/** Creates new form GraphicsView */
public GraphicsView() {
initComponents();
plot = new Plot();
this.add(plot, BorderLayout.CENTER);
}
public void drawTitle(final String title) {
this.plot.drawTitle(title);
}
Я даже создаю удобный метод для вызова метода drawTitle внутреннего класса (с тем же именем). Я делаю это потому, что хочу, чтобы внешний класс JFrame был виден при нажатии кнопки, как только он становится видимым (что обеспечивает инициализацию графики), я вызываю внешний класс drawTitle, который, в свою очередь, вызывает метод внутреннего класса с тем же именем и где Строка шоу будет нарисована ... но это не работает, я не вижу его на панели. Вот мое событие нажатия кнопки:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
GraphicsView view = new GraphicsView();
view.setVisible(true);
view.drawTitle("Hello");
}
Заранее спасибо, буду признателен за любую помощь. :)