我有一个JTable,用户可以选择一行。如果发生这种情况,我想在短时间内“突出显示”页面的另一部分,以表明这是用户交互后更改的页面的一部分。
所以我的问题是:实现这一目标的最佳方法是什么?目前我通过设置该面板的背景颜色并启动SwingWorker来实现它,该SwingWorker在短暂延迟后将颜色设置回来。它按预期工作,但使用像这样的SwingWorker是个好主意吗?这种方法有什么缺点吗?你会如何解决这个问题?
提前致谢。
答案 0 :(得分:2)
我认为Swing Timer是一个更好的选择,因为它为所有预定事件重用单个线程并在主事件循环上执行事件代码。因此,在您的SelectionListener
代码中:
// import javax.swing.Timer;
final Color backup = componentX.getBackground();
componentX.setBackground(Color.YELLOW);
final Timer t = new Timer(700, new ActionListener() {
public void actionPerformed(ActionEvent e) {
componentX.setBackground(backup);
}
});
t.setRepeats(false);
t.start();
答案 1 :(得分:0)
我推荐一个swing Timer(javax.swing.Timer)。 (不要在Java.util中使用Timer类)
这是你制作计时器的地方:
Timer t = new Timer(loopTime,actionListener)//loopTime is unimportant for your use of this
t.setInitialDelay(pause)//put the length of time between starting the timer and the color being reverted to normal
t.setRepeats(false);//by default, timer class runs on loop.
t.start();//runs the timer
保持对计时器的引用可能是有意义的,然后在需要时调用t.start。
您需要实现一个动作侦听器来处理计时器事件。如果你不知道怎么做,我可以编辑这个,但是因为你已经在使用Swing做的事情,我认为这应该不是问题。