嗨,我正在研究一个项目(Java记忆游戏),首先我想了解摇摆计时器是如何工作的.首先,我的主要课程实现ActionListener和ItemListener.我使用计时器,actionPerformed(ActionEvent e)如果用户选择不同图片的两张卡然后我用timer.start()它给他几秒钟看图片,然后他们将再次关闭.但如果用户选择两张不同的图片,他们会突然关闭,所以我看不到第二张图片.我读了一些关于摇摆计时器的教程,但我想我的理解是错误的.通过我创建我的SSCCE的方式,如果你能帮助我,我将不胜感激.谢谢anwyway ...
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Menu;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.Random;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JToggleButton;
import javax.swing.Timer;
import javax.swing.UIManager;
import javax.swing.border.*;
public class ConcentrationGame4 extends JFrame implements ActionListener, ItemListener{
private static final long serialVersionUID = 1L;
private int buttoncounter=0;
private int counter = 0;
private JFrame …Run Code Online (Sandbox Code Playgroud) 我正在讨论一个侧面项目的一些想法,我想创建一个使用Java swing的GUI,它看起来不像来自Windows95.我正在努力的一个想法是使用JLabel作为按钮而不是标准的JButton.这样我就可以根据需要自定义悬停,拖动和移动效果.
研究MouseAdapter class应该允许我做我想做的一切,不幸的是我在实现悬停效果时遇到了一些麻烦,因为它JLabel似乎没有更新.我已经尝试通过调用直接更新帧,frame.update(getGraphics());但这似乎不像我认为的那样工作.
我可以就如何正确更新标签获得一些建议.
注意:这只是一个示例,没有花费精力来有效地组织代码
public class Window extends JFrame {
/**
*
*/
private static final long serialVersionUID = 5259700796854880162L;
private JTextField textField;
private JLabel lblNewLabel;
static Window frame;
int i = 0;
public Window() {
JPanel panel = new JPanel();
getContentPane().add(panel, BorderLayout.CENTER);
panel.setLayout(null);
lblNewLabel = new JLabel("New label");
lblNewLabel.setBackground(Color.LIGHT_GRAY);
lblNewLabel.setBounds(137, 38, 114, 70);
panel.add(lblNewLabel);
lblNewLabel.addMouseListener(new LabelAdapter());
textField = new JTextField();
textField.setBounds(122, 119, 86, 20);
panel.add(textField);
textField.setColumns(10);
}
private class LabelAdapter extends …Run Code Online (Sandbox Code Playgroud)