dunque io ho una classe copy.java che deve sul click di un button mandarmi una stringa sulla seriale per far questo mi vorrei avvalere di una classe già trovata in rete però non capisco come utilizzarla...potreste aiutarmi


classe copy:
codice:
import java.awt.*;
import java.awt.event.*; //nuova da inserire su tutti per gestire il button
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.*;
                
public class Copy extends JFrame {
 // public static void main(String[] args) {
   // new Copy(char p);
  //}

  private JList sampleJList;
  private JTextField valueField;

  private JButton button;
  
  public Copy(char p) {
    super("Copy/"+p);
    //System.out.println(p);
        
	//JInternalFrame copy = new JInternalFrame("Copy ",true,true,true,true);
	//copy.setSize(200,200);
	//copy.setVisible(true);
	

    WindowUtilities.setNativeLookAndFeel();
    //addInternalFrameListener(new ExitListener());
    Container content = getContentPane();

    // Create the JList, set the number of visible rows, add a
    // listener, and put it in a JScrollPane.
    String[] entries = { "Entry 112121212121212121212", "Entry 2", "Entry 3",
                         "Entry 4", "Entry 5", "Entry 6"};
    sampleJList = new JList(entries);
    sampleJList.setVisibleRowCount(4);
    Font displayFont = new Font("century gothic", Font.BOLD, 12);
    sampleJList.setFont(displayFont);
    sampleJList.addListSelectionListener(new ValueReporter());
    JScrollPane listPane = new JScrollPane(sampleJList);
    
    JPanel listPanel = new JPanel();
    listPanel.setBackground(Color.white);
    Border listPanelBorder =
      BorderFactory.createTitledBorder("Copy file");
    listPanel.setBorder(listPanelBorder);
    listPanel.add(listPane);
    content.add(listPanel, BorderLayout.CENTER);

    JLabel valueLabel = new JLabel("New name:");
    valueLabel.setFont(displayFont);
    valueField = new JTextField("None", 20);
    valueField.setFont(displayFont);

     

    button = new JButton("Copy");
    button.setActionCommand("Copy");   //nuovo
    button.addActionListener(new PushButtonActionListener());     //nuovo

    JPanel valuePanel = new JPanel(new GridLayout(4, 1, 2, 2));
    valuePanel.setBackground(Color.white);
    //Border valuePanelBorder =
     // BorderFactory.createTitledBorder("Edit Selection");
    //valuePanel.setBorder(valuePanelBorder);
    valuePanel.add(valueLabel);
    valuePanel.add(valueField);
    
   

    valuePanel.add(button);

    content.add(valuePanel, BorderLayout.SOUTH);
    pack();
    setVisible(true);

  }

  private class ValueReporter implements ListSelectionListener {
    public void valueChanged(ListSelectionEvent event) {
      if (!event.getValueIsAdjusting()) 
        valueField.setText(sampleJList.getSelectedValue().toString());
    }
  }
  //actionlistener     azione di invio dei dati con il button
  private class PushButtonActionListener implements ActionListener
  {
		public void actionPerformed(ActionEvent ae)
                {
			if (ae.getActionCommand().equals("Copy"))
                        {
				//invia stringa sulla seriale

                                
			}
		}
   }
}
classe che scrive sulla seriale:

codice:
// derived from SUN's examples in the javax.comm package
import java.io.*;
import java.util.*;
//import javax.comm.*; // for SUN's serial/parallel port libraries
import gnu.io.*; // for rxtxSerial library

public class nulltest implements Runnable, SerialPortEventListener {
   static CommPortIdentifier portId;
   static CommPortIdentifier saveportId;
   static Enumeration        portList;
   InputStream           inputStream;
   SerialPort           serialPort;
   Thread           readThread;

   static String        messageString = "Hello, world!";
   static OutputStream      outputStream;
   static boolean        outputBufferEmptyFlag = false;

   public static void main(String[] args) {
      boolean           portFound = false;
      String           defaultPort;
      
      // determine the name of the serial port on several operating systems
      String osname = System.getProperty("os.name","").toLowerCase();
      if ( osname.startsWith("windows") ) {
         // windows
         defaultPort = "COM1";
      } else if (osname.startsWith("linux")) {
         // linux
        defaultPort = "/dev/ttyS0";
      } else if ( osname.startsWith("mac") ) {
         // mac
         defaultPort = "????";
      } else {
         System.out.println("Sorry, your operating system is not supported");
         return;
      }
          
      if (args.length > 0) {
         defaultPort = args[0];
      } 

      System.out.println("Set default port to "+defaultPort);
      
		// parse ports and if the default port is found, initialized the reader
      portList = CommPortIdentifier.getPortIdentifiers();
      while (portList.hasMoreElements()) {
         portId = (CommPortIdentifier) portList.nextElement();
         if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
            if (portId.getName().equals(defaultPort)) {
               System.out.println("Found port: "+defaultPort);
               portFound = true;
               // init reader thread
               nulltest reader = new nulltest();
            } 
         } 
         
      } 
      if (!portFound) {
         System.out.println("port " + defaultPort + " not found.");
      } 
      
   } 

   public void initwritetoport() {
      // initwritetoport() assumes that the port has already been opened and
      //    initialized by "public nulltest()"

      try {
         // get the outputstream
         outputStream = serialPort.getOutputStream();
      } catch (IOException e) {}

      try {
         // activate the OUTPUT_BUFFER_EMPTY notifier
         serialPort.notifyOnOutputEmpty(true);
      } catch (Exception e) {
         System.out.println("Error setting event notification");
         System.out.println(e.toString());
         System.exit(-1);
      }
      
   }

   public void writetoport() {
      System.out.println("Writing \""+messageString+"\" to "+serialPort.getName());
      try {
         // write string to serial port
         outputStream.write(messageString.getBytes());
      } catch (IOException e) {}
   }

   public nulltest() {
      // initalize serial port
      try {
         serialPort = (SerialPort) portId.open("SimpleReadApp", 2000);
      } catch (PortInUseException e) {}
   
      try {
         inputStream = serialPort.getInputStream();
      } catch (IOException e) {}
   
      try {
         serialPort.addEventListener(this);
      } catch (TooManyListenersException e) {}
      
      // activate the DATA_AVAILABLE notifier
      serialPort.notifyOnDataAvailable(true);
   
      try {
         // set port parameters
         serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, 
                     SerialPort.STOPBITS_1, 
                     SerialPort.PARITY_NONE);
      } catch (UnsupportedCommOperationException e) {}
      
      // start the read thread
      readThread = new Thread(this);
      readThread.start();
      
   }

   public void run() {
      // first thing in the thread, we initialize the write operation
      initwritetoport();
      try {
         while (true) {
            // write string to port, the serialEvent will read it
            writetoport();
            Thread.sleep(1000);
         }
      } catch (InterruptedException e) {}
   } 

   public void serialEvent(SerialPortEvent event) {
      switch (event.getEventType()) {
      case SerialPortEvent.BI:
      case SerialPortEvent.OE:
      case SerialPortEvent.FE:
      case SerialPortEvent.PE:
      case SerialPortEvent.CD:
      case SerialPortEvent.CTS:
      case SerialPortEvent.DSR:
      case SerialPortEvent.RI:
      case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
         break;
      case SerialPortEvent.DATA_AVAILABLE:
         // we get here if data has been received
         byte[] readBuffer = new byte[20];
         try {
            // read data
            while (inputStream.available() > 0) {
               int numBytes = inputStream.read(readBuffer);
            } 
            // print data
            String result  = new String(readBuffer);
            System.out.println("Read: "+result);
         } catch (IOException e) {}
   
         break;
      }
   } 

}