Я хочу перерисовать мою jPanel каждый раз, когда я вызываю метод с именем change()
. В этом методе я просто меняю свою логическую переменную draw
, и я звоню this.repaint()
. Чтобы рисовать на панели работает, но если я нажму кнопку, линия все еще там, но линия должна исчезнуть. После того, как я позвоню repaint()
, я не могу достичь метода paintComponent()
. Почему метод repaint()
работает неправильно?Java repaint() не работает в классе jPanel
Вот мой код из класса панели:
import java.awt.Graphics;
public class testPanel extends javax.swing.JPanel {
public boolean draw = true;
public testPanel() {
initComponents();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 603, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 299, Short.MAX_VALUE)
);
}// </editor-fold>
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (draw == true) {
g.drawLine(0, 0, 20, 35);
}
}
public void change() {
draw = !draw;
this.repaint();
}
}
Edit, это как я доступ к этому методу change()
:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
testPanel testPanel = new testPanel();
testPanel.change();
}
Edit, как я добавить JPanel к моей JFrame:
private void initComponents() {
jPanel1 = new testPanel();
jButton1 = new javax.swing.JButton();
...
Additionaly использование 'перепроверить '. – SomeJavaGuy
Я до сих пор не могу найти метод 'paintComponent()'. –
Где вы добавляете кнопку? Вы добавили к кнопке actionListener? – SomeJavaGuy