如何使用不同导入的双定时器

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.Timerjavax.swing.Timer

我建议您导入 class 中的 none 并解决两个 class 完全合格的问题,这样您就不会感到困惑。