如何在同一个java文件中使用timer()和timer1(1000,actionListener) 如果我导入java.util.timer然后我在timer1上得到错误,如果我没有导入它,我会在另一个上得到错误。
无论如何都可以绕过这个?我正在使用计时器()来计划倒计时,而计时器1计算秒数,我希望它停止使用
公共类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);
}
}
}
答案 0 :(得分: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()
答案 1 :(得分:0)
您无法导入具有相同类名的两个类。其中至少有一个必须完全合格(即java.util.Timer
或javax.swing.Timer
)
我建议你不要导入任何课程,并且要完全符合这两个课程的要求,这样你就不会感到困惑。