私はGUIを書いています。そのGUIには、たくさんの形があります(約200)。ペイント法で描きました。
ある状況では、それらを点滅させる必要があります(2つの色を切り替える)。forループでは、色を変更してからfram.repaint();を変更しています。
しかし、いくつかのボタンをクリックすると、しばらくするとプログラムが非常に遅くなります。プロファイルを介して確認しました(Netbeansを使用しています)。しばらくすると、AWT-Event-Queueが常に実行され始めているのがわかりました。
だから、私は2つの解決策を持つことができます:
別のAWT-EventQueueを追加するAWT-EventQueueを分割する方法はありますか?または200個の図形を点滅させるためのより良い方法はありますか?
ありがとうございました
注:詳細には、pumpEvents、pumpEventsForHierarchy、pumpEventsForFilter、pumpOneEventFilters、...
ペイント方法は次のとおりです。
@Override
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.setStroke(bs_3);
g2d.setColor(currentcolor);
g2d.draw(line);;
}
これがスレッドです:
paintTimer = new Timer(1000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
mframe.repaint();
for (CircuitPanel cp : mframe.cppL){
cp.onOff();
}
});
paintTimer.start();
カラーチェンジャーの方法は次のとおりです。
@Override
public void onOff() {
if(currentcolor.equals(offcolor)){
currentcolor=oncolor;
}else{
currentcolor=offcolor;
}
}