aintComponent()
にメソッドを入れましたJPanel
。このメソッドは、 を使用してツリーを描画しますGraphics.drawLine()
。
JButton
このツリーをズームするために Listener を使用するを置きます。最後にこのrepaint()
方法を使用すると、ツリーが大きく再描画されるので問題ありません。
// Add Listeners on Zooming buttons
bPlus.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
Node.setZoom(1);
repaint();
}
});
ただし、MouseMotionListener
JPanel 内でこのツリーを移動するために を使用しました。次に、 を呼び出しrepaint()
ても、以前に印刷されたツリーは消去されないため、ツリーが複製されてしまいます。
addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent e) {
if(mouseHolded) {
x += e.getX() - mouseX;
mouseX = e.getX();
y += e.getY() - mouseY;
mouseY = e.getY();
repaint(); // <===
}
}
}
);
私は何を間違っていますか?をズームに使用すると以前の木が消去されるのにrepaint()
、木を移動すると消去されないのはなぜですか?