その中にJFrame
2 つJPanel
があります: a PaintPanel
(paint()
メソッド付き) と a ButtonPanel
(ボタン付き)。の を呼び出すとrepaint()
(PaintPanel
ただし、ボタンをクリックすると) のボタンが!ButtonPanel
に描画されます。PaintPanel
クリック可能でも何でもなく、ただそこにあります。
このコードで問題を再現しようとしました:
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();
}
}
これは、私が抱えている問題を再現するものです (奇妙なコード マーキングについては申し訳ありませんが、正しく理解できないようです)。
ここで何が起こっているのか、私にはわからないので、誰かが知っていることを本当に願っています...