如何使用不同导入的双定时器
How to use dual timers with different import
如何在同一个 java 文件中使用 timer() 和 timer1(1000, actionListener)
如果我导入 java.util.timer 然后我在 timer1 上出错,如果我不导入它我在另一个上出错。
有没有办法解决这个问题?
我正在使用 timer() 来安排倒计时,并使用 timer1 来计算每一秒,但我希望它停止
public class MainFrame 扩展 JFrame {
JPanel mPanel;
JTextField outgoing, portField;
JTextArea incoming;
JButton sendButton;
ArrayList clientOutputStreams;
PrintWriter writer;
BufferedReader reader;
Socket socket;
Socket clientSocket;
String message;
int port;
JMenuBar myMenu;
JRadioButtonMenuItem portList1, portList2,
portList3, portList4;
JLabel lb_timer,
lb_bug;
java.util.Timer timerr;
javax.swing.Timer timer;
int counter,
cnt,
timerEvents;
Random random;
int x,y;
int tmClicked;
//int score;
JMenuItem score;
int point;
public void Start() {
setBounds(300, 80, 600, 600);
setResizable(true);
setTitle("FatLlama");
mainPanel();
addMenuBar();
setVisible(true);
}
public void mainPanel(){
mPanel = new JPanel();
getContentPane().add(mPanel);
mPanel.setBackground(Color.LIGHT_GRAY);
mPanel.setBounds(0,0,100,20);
mPanel.setLayout(null);
mPanel.setVisible(false);
setBackground(Color.WHITE);
ImageIcon imgThisImg = new ImageIcon("images/cookie.png");
lb_bug = new JLabel("here");
//lb_bug.setIcon(imgThisImg);
lb_bug.addMouseListener(new MouseClickHandler());
lb_bug.setSize(200,200);
random = new Random();
mPanel.add(lb_bug);
x = random.nextInt(500-50);
y = random.nextInt(500-50);
lb_bug.setLocation(x, y);
}
private class MouseClickHandler extends MouseAdapter {
@Override
public void mouseClicked(MouseEvent event) {
System.out.println("bug clicked!");
x = random.nextInt(500-50);
y = random.nextInt(500-50);
lb_bug.setLocation(x, y);
tmClicked += 1;
score.setText("Score :" + Integer.toString(tmClicked));
setScore(tmClicked);
System.out.println(score.getText());
}
}
public void setScore(int tmClicked){
this.tmClicked = tmClicked;
}
public int getScore(){
return tmClicked;
}
private String createEventText() {
return String.format("%d seconds", getTimerEvents());
}
private Object getTimerEvents() {
return timerEvents;
}
public void addMenuBar() {
myMenu = new JMenuBar();
JMenuItem lb_timer = new JMenuItem("timer");
myMenu.add(lb_timer);
JMenuItem newAction = new JMenuItem("New game");
final JMenuItem srvStart = new JMenuItem();
srvStart.setText("Start");
myMenu.add(newAction);
score = new JMenuItem("Score");
myMenu.add(score);
ActionListener actListner = new ActionListener() {
public void actionPerformed(ActionEvent event) {
cnt += 1;
counter += 1;
revalidate();
System.out.println(cnt + " Seconds");
increaseTimerEvents();
lb_timer.setText(createEventText());
if(counter == 10){
System.out.println("Game Over");
mPanel.setVisible(false);
timer.stop();
revalidate();
repaint();
}else{
}
}
public void increaseTimerEvents() {
++timerEvents;
}
};
newAction.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent actionEvent) {
score.setText("Score: 0");
remainingTime(2);
System.out.println("start start start");
mPanel.setVisible(true);
revalidate();
repaint();
//timer = new Timer(1000, actListner);
timer.start();
}
});
JMenuItem quit = new JMenuItem("Quit");
myMenu.add(quit);
ActionListener quitListener = new ActionListener() {
public void actionPerformed(ActionEvent actionEvent) {
System.out.println("quit quit quit quit");
System.exit(0);
}
};
quit.addActionListener(quitListener);
setVisible(true);
setJMenuBar(myMenu);
}
public void remainingTime(int seconds) {
//Toolkit toolkit = Toolkit.getDefaultToolkit();
timerr = new Timer();
timerr.schedule(new RandomPos(), seconds * 1000);
}
class RandomPos extends TimerTask {
public void run() {
System.out.println("New pos");
//toolkit.beep();
x = random.nextInt(500-50);
y = random.nextInt(500-50);
lb_bug.setLocation(x, y);
remainingTime(2);
}
}
}
如果您对两者都有导入,则在使用它来解决歧义时需要完全限定类型。
new java.util.Timer()
new javax.swing.Timer(1000, actListner);
或者,您可以导入一个并完全限定另一个
import java.util.Timer
...
new Timer(); // <== will be java.util.Timer()
new javax.swing.Timer(1000, actListner); // <== have to fully qualify the swing variant
或
import javax.swing.Timer
...
new java.util.Timer(); // <== have to fully qualify the swing variant
new Timer(1000, actListner); // <== will be javax.swing.Timer()
您不能导入两个具有相同 class 名称的 class。其中至少有一个必须完全合格(即 java.util.Timer
或 javax.swing.Timer
)
我建议您导入 class 中的 none 并解决两个 class 完全合格的问题,这样您就不会感到困惑。
如何在同一个 java 文件中使用 timer() 和 timer1(1000, actionListener) 如果我导入 java.util.timer 然后我在 timer1 上出错,如果我不导入它我在另一个上出错。
有没有办法解决这个问题?
我正在使用 timer() 来安排倒计时,并使用 timer1 来计算每一秒,但我希望它停止
public class MainFrame 扩展 JFrame {
JPanel mPanel;
JTextField outgoing, portField;
JTextArea incoming;
JButton sendButton;
ArrayList clientOutputStreams;
PrintWriter writer;
BufferedReader reader;
Socket socket;
Socket clientSocket;
String message;
int port;
JMenuBar myMenu;
JRadioButtonMenuItem portList1, portList2,
portList3, portList4;
JLabel lb_timer,
lb_bug;
java.util.Timer timerr;
javax.swing.Timer timer;
int counter,
cnt,
timerEvents;
Random random;
int x,y;
int tmClicked;
//int score;
JMenuItem score;
int point;
public void Start() {
setBounds(300, 80, 600, 600);
setResizable(true);
setTitle("FatLlama");
mainPanel();
addMenuBar();
setVisible(true);
}
public void mainPanel(){
mPanel = new JPanel();
getContentPane().add(mPanel);
mPanel.setBackground(Color.LIGHT_GRAY);
mPanel.setBounds(0,0,100,20);
mPanel.setLayout(null);
mPanel.setVisible(false);
setBackground(Color.WHITE);
ImageIcon imgThisImg = new ImageIcon("images/cookie.png");
lb_bug = new JLabel("here");
//lb_bug.setIcon(imgThisImg);
lb_bug.addMouseListener(new MouseClickHandler());
lb_bug.setSize(200,200);
random = new Random();
mPanel.add(lb_bug);
x = random.nextInt(500-50);
y = random.nextInt(500-50);
lb_bug.setLocation(x, y);
}
private class MouseClickHandler extends MouseAdapter {
@Override
public void mouseClicked(MouseEvent event) {
System.out.println("bug clicked!");
x = random.nextInt(500-50);
y = random.nextInt(500-50);
lb_bug.setLocation(x, y);
tmClicked += 1;
score.setText("Score :" + Integer.toString(tmClicked));
setScore(tmClicked);
System.out.println(score.getText());
}
}
public void setScore(int tmClicked){
this.tmClicked = tmClicked;
}
public int getScore(){
return tmClicked;
}
private String createEventText() {
return String.format("%d seconds", getTimerEvents());
}
private Object getTimerEvents() {
return timerEvents;
}
public void addMenuBar() {
myMenu = new JMenuBar();
JMenuItem lb_timer = new JMenuItem("timer");
myMenu.add(lb_timer);
JMenuItem newAction = new JMenuItem("New game");
final JMenuItem srvStart = new JMenuItem();
srvStart.setText("Start");
myMenu.add(newAction);
score = new JMenuItem("Score");
myMenu.add(score);
ActionListener actListner = new ActionListener() {
public void actionPerformed(ActionEvent event) {
cnt += 1;
counter += 1;
revalidate();
System.out.println(cnt + " Seconds");
increaseTimerEvents();
lb_timer.setText(createEventText());
if(counter == 10){
System.out.println("Game Over");
mPanel.setVisible(false);
timer.stop();
revalidate();
repaint();
}else{
}
}
public void increaseTimerEvents() {
++timerEvents;
}
};
newAction.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent actionEvent) {
score.setText("Score: 0");
remainingTime(2);
System.out.println("start start start");
mPanel.setVisible(true);
revalidate();
repaint();
//timer = new Timer(1000, actListner);
timer.start();
}
});
JMenuItem quit = new JMenuItem("Quit");
myMenu.add(quit);
ActionListener quitListener = new ActionListener() {
public void actionPerformed(ActionEvent actionEvent) {
System.out.println("quit quit quit quit");
System.exit(0);
}
};
quit.addActionListener(quitListener);
setVisible(true);
setJMenuBar(myMenu);
}
public void remainingTime(int seconds) {
//Toolkit toolkit = Toolkit.getDefaultToolkit();
timerr = new Timer();
timerr.schedule(new RandomPos(), seconds * 1000);
}
class RandomPos extends TimerTask {
public void run() {
System.out.println("New pos");
//toolkit.beep();
x = random.nextInt(500-50);
y = random.nextInt(500-50);
lb_bug.setLocation(x, y);
remainingTime(2);
}
}
}
如果您对两者都有导入,则在使用它来解决歧义时需要完全限定类型。
new java.util.Timer()
new javax.swing.Timer(1000, actListner);
或者,您可以导入一个并完全限定另一个
import java.util.Timer
...
new Timer(); // <== will be java.util.Timer()
new javax.swing.Timer(1000, actListner); // <== have to fully qualify the swing variant
或
import javax.swing.Timer
...
new java.util.Timer(); // <== have to fully qualify the swing variant
new Timer(1000, actListner); // <== will be javax.swing.Timer()
您不能导入两个具有相同 class 名称的 class。其中至少有一个必须完全合格(即 java.util.Timer
或 javax.swing.Timer
)
我建议您导入 class 中的 none 并解决两个 class 完全合格的问题,这样您就不会感到困惑。