GUI を作成したり、Java で描画したりしたことがなく、線を効率的に描画する方法が必要です。私のアプリでは、ユーザーに 8 つのボタンが提供されます。ボタンが押されると、ボタンが押された時間に対応するウィンドウに線が描画されます。現在、jpanel で paintComponent 関数をオーバーライドし、125 ミリ秒ごとに paint() 関数を呼び出しています (描画する幅が 240 ピクセルしかないため、その 240 ピクセルで 30 秒分の記録を維持したいと考えています)。それが実行されているハードウェアは追いつくことができず、ひどい/非常に途切れ途切れに見えます. 私が使用しているコードは次のとおりです。
jPanel1 = new javax.swing.JPanel() {
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Something cur = manager.getSomething(getCurrentState());
for(int j=0; j<cur.getNumItems(); j++) {
Item i1 = cur.getItem(j);
for(int i = 0; i<i1.getLength(); i++) {
int start = i1.getStartTime(i);
int len = Math.max(0, (Math.min(i1.getStopTime(i), pix) - start));
g.fillRect(start,j*22+5,len,5);
}
}
g.drawLine(pix, 0, pix, 170);
}
};
getItem(int) は、特定のボタンの情報を返します。getStartTime(int) は、ボタンが押された特定の期間の開始時刻を返します。getStopTime(int) は、ボタンが押されたときの特定の期間の停止時間を返します。pix = パネル上の現在のピクセル (したがって、タイムラインの 30 秒の 15 秒後であれば、pix は 120 になります)
最後に、125ms ごとに jpanel1.paint() を呼び出すタイマーがあります。
これを行うためのより良い方法はありますか、または他の提案はありますか? 私は実際の描画経験がないため、詳細な情報/ソースを提供してください. 前もって感謝します!