Swing计时器的基本功能
我是Java图形设计的新手,如果可能的话,我希望您能通过一个简单的示例帮助我,以帮助我了解JFrames,Timer,SwingControllers以及所有这些东西的基本功能。您将如何实现以下情况:
我们有一个内部带有JPanel的JFrame。执行开始时,JPanel为白色,但我们希望它每两秒钟更改一次其颜色:
public class MiJFrame extends javax.swing.JFrame {
public MiJFrame() {
initComponents();
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new MiJFrame().setVisible(true);
jPanel1.setBackground(Color.yellow);
jPanel1.setBackground(Color.RED);
}
});
}
// Variables declaration - do not modify
private static javax.swing.JPanel jPanel1;
// End of variables declaration
}
最初,我在setBackgroud()方法之间使用了线程对象的sleep方法,但是它不起作用,因为它仅显示最后的更改。在这里如何使用Timer对象?
-
首先,每当需要更改表示内容的颜色时,请始终将
Opaque
属性设置为true。就像您的情况一样,JPanel
首先必须使用panelObject.setOpaque(true)
,对于某些Look And Feel
调用此方法是必须执行背景颜色更改的。关于其余部分,请尝试下面的代码示例:
import java.awt.*; import java.awt.event.*; import javax.swing.*; /* * @see * http://stackoverflow.com/q/11036830/1057230 */ public class ColourTimer { private JPanel contentPane; private Timer timer; private int counter; private Color[] colours = { Color.RED, Color.WHITE, Color.BLUE, Color.DARK_GRAY, Color.YELLOW, Color.LIGHT_GRAY, Color.BLACK, Color.MAGENTA, Color.PINK, Color.CYAN }; private ActionListener timerAction = new ActionListener() { @Override public void actionPerformed(ActionEvent ae) { if (counter == (colours.length - 1)) counter = 0; contentPane.setBackground(colours[counter++]); } }; public ColourTimer() { counter = 0; } private void displayGUI() { JFrame frame = new JFrame("Colour Timer"); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); contentPane = new JPanel(); contentPane.setOpaque(true); final JButton button = new JButton("STOP"); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent ae) { if (timer.isRunning()) { button.setText("START"); timer.stop(); } else { button.setText("STOP"); timer.start(); } } }); frame.getContentPane().add(contentPane, BorderLayout.CENTER); frame.getContentPane().add(button, BorderLayout.PAGE_END); frame.setSize(300, 200); frame.setLocationByPlatform(true); frame.setVisible(true); timer = new Timer(2000, timerAction); timer.start(); } public static void main(String... args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { new ColourTimer().displayGUI(); } }); } }
-
使用Swing计时器更新标签
2021-01-31 关注 0 浏览112 1答案
-
使用Swing计时器暂时隐藏通知
2021-01-30 关注 0 浏览98 1答案
-
JPanel中的Swing计时器和动画
2021-01-30 关注 0 浏览118 1答案
-
路由器网络层的基本功能是
2022-03-03 关注 0 浏览16 1答案
-
路由器网络层的基本功能是( )。
2022-05-08 关注 0 浏览8 1答案
-
市场的基本功能是()。
2022-05-15 关注 0 浏览26 1答案
-
如何使用Swing计时器延迟进度条的加载
2021-01-30 关注 0 浏览121 1答案
-
问题:创建一个非常准确的Swing计时器
2021-01-30 关注 0 浏览63 1答案
-
信息具有哪些基本功能?
2022-05-21 关注 0 浏览26 1答案
-
国债的基本功能是( )。
2021-04-14 关注 0 浏览46 1答案