Witam!

Mam problem z dodaniem klasy Robot do istniejącej aplikacji obsługującej nasłuch z portu com.Chciałbym by aplikacja zczytywała string z współrzędnymi z portu com i poruszała kursorem po ekranie zgodnie z nimi.Dodałem importy i przykładowy kod robota jednak wyrzuca mi błędy i tu moja prośba o pomoc bo nie wiem co robię źle a potrzebuję to do szkoły jakby ktoś wytłumaczył jak zielonemu tak bym sobie poradził

 /*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * PortSzeregowy.java
 *
 * Created on 2010-01-28, 08:42:59
 */

package RS232;


import java.io.*;
import gnu.io.*;
import java.util.*;
import javax.swing.UnsupportedLookAndFeelException;
import java.awt.Robot;
import java.awt.AWTException;
/**
 *
 */
// konieczna inplementacja ->  implements SerialPortEventListener
public class PortSzeregowy extends javax.swing.JFrame implements SerialPortEventListener{

    // ----- inicjator klasy (static) - Uwaga ! wykonuje sie jako pierwsza w programie
    static {
        try {   // ten fragment kodu dostosowuje aplikacje do twojego systemu
            javax.swing.UIManager.setLookAndFeel(javax.swing.UIManager.getSystemLookAndFeelClassName());
            javax.swing.JDialog.setDefaultLookAndFeelDecorated(true);   // rysuje ramkę i listwę górną okna
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        } catch (InstantiationException e) {
            throw new RuntimeException(e);
        } catch (IllegalAccessException e) {
            throw new RuntimeException(e);
        } catch (UnsupportedLookAndFeelException e) {
            throw new RuntimeException(e);
        }
    }
    
    /** Creates new form PortSzeregowy */
    public PortSzeregowy() {
        getPorts(); // wyznacz ilość portów RS232
        initComponents();
        jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(portList));
        this.setTitle("PortSeregowy"); // tworzy tytul aplikacji
        jComboBox2.setModel(new javax.swing.DefaultComboBoxModel(new String[] {                           
                           "2400","4800","7200","9600","14400","19200","38400",
                           "57600","115200","128000"}));
        jComboBox1.setSelectedIndex(0);// wybrany port
        jComboBox2.setSelectedIndex(3);// wybrana prędkość
        jTextArea1.setFocusable(false);// tylko do odczytu
        jTextArea1.append(" W tym oknie będzie odbiór danych\n");
        jTextArea1.append(">> domyślnie: port COM1, szybkość 9600).\n ");
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jPanel5 = new javax.swing.JPanel();
        jButton1 = new javax.swing.JButton();
        jPanel6 = new javax.swing.JPanel();
        jPanel10 = new javax.swing.JPanel();
        jComboBox1 = new javax.swing.JComboBox();
        jPanel9 = new javax.swing.JPanel();
        jComboBox2 = new javax.swing.JComboBox();
        jPanel2 = new javax.swing.JPanel();
        jPanel4 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTextArea1 = new javax.swing.JTextArea();
        jPanel3 = new javax.swing.JPanel();
        jPanel8 = new javax.swing.JPanel();
        jTextField1 = new javax.swing.JTextField();
        jPanel7 = new javax.swing.JPanel();
        jButton2 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                formWindowClosing(evt);
            }
        });

        jPanel1.setPreferredSize(new java.awt.Dimension(10, 100));
        jPanel1.setRequestFocusEnabled(false);
        jPanel1.setLayout(new java.awt.BorderLayout());

        jPanel5.setBorder(javax.swing.BorderFactory.createEmptyBorder(30, 10, 30, 10));
        jPanel5.setMinimumSize(new java.awt.Dimension(120, 100));
        jPanel5.setPreferredSize(new java.awt.Dimension(120, 100));
        jPanel5.setRequestFocusEnabled(false);
        jPanel5.setLayout(new java.awt.BorderLayout());

        jButton1.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        jButton1.setText("Otwórz");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        jPanel5.add(jButton1, java.awt.BorderLayout.CENTER);

        jPanel1.add(jPanel5, java.awt.BorderLayout.LINE_START);

        jPanel6.setBorder(javax.swing.BorderFactory.createEmptyBorder(30, 10, 30, 10));
        jPanel6.setLayout(new java.awt.GridLayout(1, 2, 10, 1));

        jComboBox1.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
        jComboBox1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jComboBox1ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel10Layout = new javax.swing.GroupLayout(jPanel10);
        jPanel10.setLayout(jPanel10Layout);
        jPanel10Layout.setHorizontalGroup(
            jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 140, Short.MAX_VALUE)
            .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jComboBox1, javax.swing.GroupLayout.Alignment.TRAILING, 0, 140, Short.MAX_VALUE))
        );
        jPanel10Layout.setVerticalGroup(
            jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 40, Short.MAX_VALUE)
            .addGroup(jPanel10Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jComboBox1, javax.swing.GroupLayout.DEFAULT_SIZE, 40, Short.MAX_VALUE))
        );

        jPanel6.add(jPanel10);

        jComboBox2.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        jComboBox2.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
        jComboBox2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jComboBox2ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel9Layout = new javax.swing.GroupLayout(jPanel9);
        jPanel9.setLayout(jPanel9Layout);
        jPanel9Layout.setHorizontalGroup(
            jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 140, Short.MAX_VALUE)
            .addGroup(jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jComboBox2, javax.swing.GroupLayout.Alignment.TRAILING, 0, 140, Short.MAX_VALUE))
        );
        jPanel9Layout.setVerticalGroup(
            jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 40, Short.MAX_VALUE)
            .addGroup(jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jComboBox2, javax.swing.GroupLayout.DEFAULT_SIZE, 40, Short.MAX_VALUE))
        );

        jPanel6.add(jPanel9);

        jPanel1.add(jPanel6, java.awt.BorderLayout.CENTER);

        getContentPane().add(jPanel1, java.awt.BorderLayout.NORTH);

        jPanel2.setPreferredSize(new java.awt.Dimension(319, 292));
        jPanel2.setLayout(new java.awt.BorderLayout());

        jPanel4.setBorder(javax.swing.BorderFactory.createEmptyBorder(10, 10, 10, 10));
        jPanel4.setLayout(new java.awt.BorderLayout());

        jTextArea1.setColumns(20);
        jTextArea1.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
        jTextArea1.setRows(5);
        jScrollPane1.setViewportView(jTextArea1);

        jPanel4.add(jScrollPane1, java.awt.BorderLayout.CENTER);

        jPanel2.add(jPanel4, java.awt.BorderLayout.CENTER);

        jPanel3.setPreferredSize(new java.awt.Dimension(10, 100));
        jPanel3.setLayout(new java.awt.BorderLayout());

        jPanel8.setBorder(javax.swing.BorderFactory.createEmptyBorder(40, 40, 40, 40));
        jPanel8.setLayout(new java.awt.BorderLayout());

        jTextField1.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        jTextField1.setHorizontalAlignment(javax.swing.JTextField.CENTER);
        jTextField1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTextField1ActionPerformed(evt);
            }
        });
        jPanel8.add(jTextField1, java.awt.BorderLayout.PAGE_END);

        jPanel3.add(jPanel8, java.awt.BorderLayout.CENTER);

        jPanel7.setBorder(javax.swing.BorderFactory.createEmptyBorder(30, 10, 30, 10));
        jPanel7.setPreferredSize(new java.awt.Dimension(120, 20));
        jPanel7.setLayout(new java.awt.BorderLayout());

        jButton2.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        jButton2.setText("Wyślij");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });
        jPanel7.add(jButton2, java.awt.BorderLayout.CENTER);

        jPanel3.add(jPanel7, java.awt.BorderLayout.LINE_START);

        jPanel2.add(jPanel3, java.awt.BorderLayout.NORTH);

        getContentPane().add(jPanel2, java.awt.BorderLayout.CENTER);

        pack();
    }// </editor-fold>                        

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        jTextArea1.replaceRange("",0,jTextArea1.getText().length());
        // ---------------------------------------------------------------------
        if (portIdentifier.isCurrentlyOwned()) {
            jButton1.setText("Otwórz");
            if (inputStream != null) {
            try {
                inputStream.close();
                System.out.println("zamknięcie strumienia inputStream");
            } catch (IOException ex) {
                }
            }
            if (outputStream != null) {
            try {
                outputStream.close();
                System.out.println("zamknięcie strumienia outputStream");
            } catch (IOException ex) {
                }
            }
            serialPort.removeEventListener();//usunięcie listenera do obslugi zdarzeń na RS232
            if (serialPort != null) {
                serialPort.close();
            }
            System.out.println("zamknięcie portu szeregowego.");
            stanPortu = false;
            jTextArea1.append(">>Port "+portName+" jest zamknięty.\n");
        } else { //-------------------------------------------------------------
            jButton1.setText("Zamknij");
            portName = (String)jComboBox1.getSelectedItem();
            jTextArea1.append(">>Port otwarty:  "+portName+" , "+baudRate+"\n");
            try {
                connect(portName);
                System.out.println("Uwaga! port " +portName+" otwarty.");
            }
            catch ( Exception e ) {
            }
            try {
                serialPort.addEventListener(this); //inicjalizacja listenera do obslugi zdarzeń na RS232
            } catch (TooManyListenersException ex) {
            }
            // ---------------------------------------
            serialPort.notifyOnDataAvailable(true); // aktywacja znacznika DATA_AVAILABLE (odczyt z portu)
            // ---------------------------------------
            jTextArea1.append(">>Port jest otwarty !!!.\n");
        }
        System.out.println("koniec funkcji Start/Stop portu");
    }                                        

    private void formWindowClosing(java.awt.event.WindowEvent evt) {                                   
        //jeśli port otwarty to go zamknij
        if (portIdentifier.isCurrentlyOwned()) {
            if (inputStream != null) 
                try {
                    inputStream.close();
                    System.out.println("zamknięcie strumienia inputStream");
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
            if (outputStream != null) 
                try {
                    outputStream.close();
                    System.out.println("zamknięcie strumienia outputStream");
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
            serialPort.removeEventListener();//usunięcie listenera do obslugi zdarzeń na RS232
            if (serialPort != null) serialPort.close();
            stanPortu = false;
            System.out.println("zamknięcie portu szeregowego.");
        }
    }                                  

    private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
        if (stanPortu == true) { 
            jTextArea1.append("Musisz zamknąć port.\n");
        }
        else {
            portName = (String)jComboBox1.getSelectedItem();
        }
    }                                          

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        jTextField1ActionPerformed(evt);
    }                                        

    private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {                                            
        String text = jTextField1.getText();    
        jTextArea1.append(">>"+text + "\n");   
        jTextField1.selectAll();                
        zapiszDoPortu(text);
    }                                           

    private void jComboBox2ActionPerformed(java.awt.event.ActionEvent evt) {                                           
        if (stanPortu == true) { 
            jTextArea1.append("Musisz zamknąć port.\n");
        }
        else {
            baudRate = Integer.valueOf((String)jComboBox2.getSelectedItem()).intValue();
        }
    }                                          

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new PortSzeregowy().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JComboBox jComboBox1;
    private javax.swing.JComboBox jComboBox2;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel10;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JPanel jPanel6;
    private javax.swing.JPanel jPanel7;
    private javax.swing.JPanel jPanel8;
    private javax.swing.JPanel jPanel9;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextArea jTextArea1;
    private javax.swing.JTextField jTextField1;
    // End of variables declaration                   
    private CommPortIdentifier portIdentifier = null;
    private SerialPort serialPort;
    private InputStream inputStream;
    private OutputStream outputStream;
    private int baudRate; // ustala szybkość transmisji
    private String[] portList;
    private String portName;
    private boolean stanPortu = false;// port zamknięty

//------------------------------------------------------------------------------
    private void getPorts() {
        Enumeration portEnum = CommPortIdentifier.getPortIdentifiers();
        String[] tempPortList = new String[20]; 
        int numports = -1;
        while ( portEnum.hasMoreElements() )
        {
            portIdentifier = (CommPortIdentifier) portEnum.nextElement();
            numports++;
            tempPortList[numports]=portIdentifier.getName();
        } 
        portList = new String[numports];
        for (int i = 0; i < numports; i++) {
            portList[i] = tempPortList[i];
        }
    }


    void connect(String portName) throws Exception
    { 
        portIdentifier = CommPortIdentifier.getPortIdentifier(portName);
        if ( portIdentifier.isCurrentlyOwned() ) {
            System.out.println("Error: Port is currently in use");
        }
        else { 
            CommPort commPort;
            commPort = portIdentifier.open(this.getTitle(),2000);
            serialPort = (SerialPort) commPort;
            // ustawiene parametrów połaczenia
            // domyślnie -> 9600, 8, 1, N
            serialPort.setSerialPortParams(baudRate,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);
            inputStream = serialPort.getInputStream(); //inicjalizacja strumienia wejsciowego
            outputStream = serialPort.getOutputStream(); //inicjalizacja strumienia wyjsciowego
            stanPortu = true;
            }
        }

//--- Zapis do portu (ręczny)---------------------------------------------------
    private void zapiszDoPortu(String tekst) {
         if (stanPortu == true) {    // port otwarty
            try {
                outputStream.write(tekst.getBytes()); 
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
     }

//--- Odczyt z portu (automatyczny)---------------------------------------------
    public void serialEvent(SerialPortEvent event) {
        switch(event.getEventType()) {
            case SerialPortEvent.BI:                    // int =10
            case SerialPortEvent.OE:                    // int =7
            case SerialPortEvent.FE:                    // int =9
            case SerialPortEvent.PE:                    // int =8
            case SerialPortEvent.CD:                    // int =6
            case SerialPortEvent.CTS:                   // int =3
            case SerialPortEvent.DSR:                   // int =4
            case SerialPortEvent.RI:                    // int =5
            case SerialPortEvent.OUTPUT_BUFFER_EMPTY:   // int =2
                break;
            case SerialPortEvent.DATA_AVAILABLE:        // int =1
                        try {
                            int nb = inputStream.available();// ilość bajtów odczytana ze strumienia
                            while (nb > 0) {
				byte[] readBuffer = new byte[nb];
				inputStream.read(readBuffer);
				String str = new String(readBuffer);
                                // str = str.replace("\r","\n");
				jTextArea1.append(str + "\n");
				nb = inputStream.available();
                            }
                        } catch (IOException ex) {
                            ex.printStackTrace();
                        }
                jTextArea1.setCaretPosition(jTextArea1.getText().length());
                break;
            }
    }

}

    public Robo() {

    }

    public void useRobot(){
        try{
            Robot r = new Robot();
            r.mouseMove(5, 5);
            r.toString();
        }
        catch (AWTException e){}
    }

    public void useRobot2(){
        try{
            Robot r = new Robot();
            r...... //some other things
        }
        catch (AWTException e){}
    }
}

A tu błedy

 run:
WARNING:  RXTX Version mismatch
	Jar version = RXTX-2.2pre1
	native lib Version = RXTX-2.2pre2
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: setSelectedIndex: 0 out of bounds
	at javax.swing.JComboBox.setSelectedIndex(JComboBox.java:620)
	at RS232.PortSzeregowy.<init>(PortSzeregowy.java:52)
	at RS232.PortSzeregowy$7.run(PortSzeregowy.java:332)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:744)
	at java.awt.EventQueue.access$400(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:697)
	at java.awt.EventQueue$3.run(EventQueue.java:691)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:714)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)