İçinde 2 JPanel
bulunan bir JFrame
var: bir PaintPanel
(bir paint()
yöntemi ile) ve bir ButtonPanel
(düğmeleri ile). PaintPanel
'un repaint()
'unu (ancak düğmeyi tıklatarak) çağırdığımda ButtonPanel
düğmesinin PaintPanel
içinde boyanması! Tıklanabilir veya bir şey değil, sadece orada.JButton, yeniden boyanırken kopyalandı mı?
public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame("frame");
frame.setSize(400,400);
frame.setLayout(new GridLayout(2,1));
PaintPanel paint = new PaintPanel();
ButtonPanel buttons = new ButtonPanel(paint);
frame.add(paint);
frame.add(buttons);
frame.setVisible(true);
}
}
public class PaintPanel extends JPanel{
public void paint(Graphics g){
g.drawRect(10, 10, 10, 10);
}
}
public class ButtonPanel extends JPanel implements ActionListener{
private PaintPanel paintPanel;
public ButtonPanel(PaintPanel paintPanel){
this.paintPanel=paintPanel;
JButton button = new JButton("button");
button.addActionListener(this);
add(button);
}
@Override
public void actionPerformed(ActionEvent arg0) {
paintPanel.repaint();
}
}
Bu aldığım sorunu yeniden ruh (tek kod işaretleri için üzgün, doğru almak gibi olamaz):
Bu kod ile sorunu yeniden çalıştı.Gerçekten tüm
Böyle render eserler genellikle [opaklığı] yerine getirilmemesinin kaynaklanan (http://java.sun.com/products/jfc/tsc/articles/painting/index.html#props) özellik. Üstelik, "Swing programları" paint() karakterini geçersiz kılmak yerine paintComponent() 'i geçersiz kılar. "- [* AWT ve Swing'de Boyama: Boya Yöntemleri *] (http://java.sun.com/products/jfc /tsc/articles/painting/index.html#callbacks). – trashgod