0

我是 JAVA 新手。只是我想在窗口中创建另一个机器人作为以下代码中的另一个线程。我尝试使用 thread.sleep 完成此任务,但无法完成任务。任何人都可以在这方面帮助我吗?

public static void main(String[] args) 
{
        JFrame window = new JFrame("Example App (Swing)");
        SwingArena arena = new SwingArena();
        arena.addListener((x, y) ->
        {   arena.setRobotPosition(2,2);
            System.out.println("Arena click at (" + x + "," + y + ")");
        });
        
        JToolBar toolbar = new JToolBar();
        JLabel label = new JLabel("Score: 999");
        toolbar.add(label);
        
        JTextArea logger = new JTextArea();
        JScrollPane loggerArea = new JScrollPane(logger);
        loggerArea.setBorder(BorderFactory.createEtchedBorder());
        logger.append("Hello\n");
        logger.append("World\n");
        
        JSplitPane splitPane = new JSplitPane(
        JSplitPane.HORIZONTAL_SPLIT, arena, logger);
        Container contentPane = window.getContentPane();
        contentPane.setLayout(new BorderLayout());
        contentPane.add(toolbar, BorderLayout.NORTH);
        contentPane.add(splitPane, BorderLayout.CENTER);   
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setPreferredSize(new Dimension(800, 800));
        window.pack();
        window.setVisible(true);         
        splitPane.setDividerLocation(0.75);
    Thread updater = new Thread(new Runnable(){

        @Override
        public void run() {
            while(!Thread.currentThread().isInterrupted()) {
                try {Thread.sleep(2000);
                 SwingArena arena2 = new SwingArena();
                arena2.addListener((x, y) ->
                {   arena2.setRobotPosition(2,2);
                    System.out.println("Arena click at (" + x + "," + y + ")");
                });

                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
               window.pack();  
            }  
        }});
     updater.start();
}    
4

0 回答 0