0

それぞれに異なる結果を持つ2つの異なるフレームを表示したい。私のコードは次のとおりです。

JFrame frame = new JFrame("Before the outage in Maximization");
MyCanvas canvas = new MyCanvas(initials.vaccesspoint,initials.vTerminal);
frame.setSize(initials.frameSize, initials.frameSize);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(canvas);
frame.setVisible(true);
Graphics graph = canvas.getGraphics();
canvas.paintComponent(graph);

この後、最後のフレームのインデックスを変更するようにいくつかのコードを記述し、これを再度実行します。

JFrame frame2 = new JFrame("Before the outage in Maximization");
MyCanvas canvas2 = new MyCanvas(initials.vaccesspoint,initials.vTerminal);
frame2.setSize(initials.frameSize, initials.frameSize);
frame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame2.add(canvas2);
frame2.setVisible(true);
Graphics graph2 = canvas2.getGraphics();
canvas2.paintComponent(graph2);

次に、両方のフレームに表示されますが、同じ情報を持っています。これは間違っています。何か助けてください。

4

1 に答える 1

2

これらの 2 つの行は同一です

MyCanvas canvas = new MyCanvas(initials.vaccesspoint,initials.vTerminal);
MyCanvas canvas2 = new MyCanvas(initials.vaccesspoint,initials.vTerminal);

したがって、どこかでデータが異なると仮定する必要があります..

そして、これらの行は必要ありません

Graphics graph = canvas.getGraphics();
canvas.paintComponent(graph);

Graphics graph2 = canvas2.getGraphics();
canvas2.paintComponent(graph2);

実際、彼らは悪い考えだと思います。ペイント プロセスを制御するのはユーザーではありません。Swing が制御します。

于 2012-09-06T12:05:11.973 に答える