Я очень новичок в графической части Java. Я создал фрейм, и на нем я добавил панель, цвет которой был зеленым. Теперь, щелкнув эту панель, я хочу нарисовать круг, используя объект тестового класса Mypanel. Но этого не происходит. Пожалуйста, направляйте!Как использовать метод repaint в Java Swing
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
class Mypanel extends JPanel
{
@Override
public void paintComponent(Graphics g)
{
g.drawOval(15, 15, 5, 5);
}
}
public class algo extends javax.swing.JFrame {
public algo() {
initComponents();
jPanel1.setBackground(Color.GREEN);
}
Mypanel p = new Mypanel() ;
private void jPanel1MouseClicked(java.awt.event.MouseEvent evt) {
p.repaint();
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new algo().setVisible(true);
}
});
}
}
Если бы я был догадаться, я бы сказал, что я не должен использовать метод перекрашивать, но мне сказали, что это должно было быть использовано.
По моему мнению, вам понадобится перерисовать, когда вы меняете структуру, т. Е. Овал на квадрат или аналогично. При качании в большинстве случаев изменения компонентов автоматически отражаются. когда вы вызываете метод setter конкретного атрибута. – Acewin
Невозможно быть уверенным, поскольку вы не включили свой метод 'initComponents()' в свой вопрос, но вероятная причина заключается в том, что ваш экземпляр 'Mypanel' имеет ширину нуля и высоту нуля. Вы можете исправить это, переопределив [getPreferredSize()] (http://docs.oracle.com/javase/8/docs/api/java/awt/Component.html#getPreferredSize--) в своем классе Mypanel. Кроме того, первая строка в переопределенном методе paintComponent всегда должна быть 'super.paintComponent (g);'. Если вы этого не сделаете, вы увидите странное поведение. – VGR
Основываясь на вашем коде, я считаю, что вы программист на C#, так? В Java только создание метода с именем вашего объекта и sufix 'MouseClicked' вообще не добавляет событие к вашему объекту. Я настоятельно рекомендую вам больше узнать о Java, событиях, о назначении имен, а затем переписать код =) –