簡體   English   中英

向量到JTable的向量

[英]Vector of vectors to JTable

我將一些數據保存在向量的向量中

Vector<Vector<String>> dataList= 
new Vector<Vector<String>>();

而且我需要在JTable中顯示該數據,但是問題是當我使用Iterator時:

Iterator it=dataList.iterator();

不要具有next()或hasNext()方法。 我嘗試轉換Iterator,但id卻無濟於事...我嘗試了2個Forech循環,但又遇到問題

 for(Vector<String> v : dataList) {
for(String s: v) {
tableMod.addRow(v.get(s));
} 
} 

但是我又遇到了問題,因為方法get()需要int參數...請給mi一些有用的解決方案親切的問候

應該:

for(Vector<String> v : dataList) {
    tableMod.addRow(v);
}

更新! 我必須通過串行端口從Arduino do Java發送結果並將其顯示在表中。 我在那兒張貼了我在Arduino和Java中的Java程序和代碼中得到的結果圖像

圖片

我的Arduino代碼:

 #define pinPWM 6
 #define analogPinIn A0 
 #define analogPinOut A1

const int r = 68;
const int R = 470;

int valAnalogPinIn; 
int valAnalogPinOut; 

int Udig[10]={120,135,150,165,180,195,210,225,240,255};
int voltageDigi,ii=0;
int noMeasuring=30;
float voltageIn;
float voltageOut;
float avrVoltageIn;
float avrVoltageOut;
float U;

void setup() {
 pinMode(pinPWM,OUTPUT);
 Serial.begin(9600);

}

void loop() {

int br=0;
float Uin, Uout, Ia;

 while(ii<=10-1){
 analogWrite(pinPWM,Udig[ii]);
 Serial.print(Udig[ii]);  
 Uin=measurUin();
 Uout=measurUout();
 U=Uin-Uout;
 Ia=U/r;
  Serial.print(",");
  Serial.print(Uin);
 Serial.print(",");
 Serial.print(Uout);
 Serial.println();


 ii=ii+1;
 delay(1);

  }    

}

float measurUin(){

 long sumVoltageIn=0;

 for(int i=1;i<=noMeasuring;i++){
valAnalogPinIn=analogRead(analogPinIn);
sumVoltageIn=sumVoltageIn+valAnalogPinIn; 
delay(1);

}
avrVoltageIn=sumVoltageIn/noMeasuring; 
avrVoltageIn=avrVoltageIn*(5.0/1024);

 return avrVoltageIn;
}
float measurUout(){

 long sumVoltageOut=0;

  for(int i=1;i<=noMeasuring;i++){
 valAnalogPinOut=analogRead(analogPinOut);
 sumVoltageOut=sumVoltageOut+valAnalogPinOut; 
  delay(1);

  }
  avrVoltageOut=sumVoltageOut/noMeasuring; 
  avrVoltageOut=avrVoltageOut*(5.0/1024);

  return avrVoltageOut; 
}

我的Java代碼:

public class SerialTest extends JFrame implements SerialPortEventListener{


SerialPort serialPort;

  Vector<String> header;
 Vector<Vector<String>> dataList=new Vector<Vector<String>>();
 Vector<String> lista=new Vector<String>();

DefaultTableModel tableMod;

private static final String PORT_NAMES[] = { 
        "/dev/tty.usbserial-A9007UX1", // Mac OS X
                    "/dev/ttyACM0", // Raspberry Pi
        "/dev/ttyUSB0", // Linux
        "COM8", // Windows
};
private BufferedReader input;
private OutputStream output;
private static final int TIME_OUT=200;
private static final int DATA_RATE=9600;
JButton btn=new JButton("Insert");

SerialTest(){
    super("Serial Test");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    header=new Vector<String>();
    header.add("PWM");
    header.add("Uin");
    header.add("Uout"); 
    btn.setSize(70, 50);
    JPanel panelbtn=new JPanel();
    panelbtn.add(btn);
    tableMod=new DefaultTableModel();
  JTable table=new JTable(tableMod);
   tableMod.addColumn("PWM");
    tableMod.addColumn("Uin");
    tableMod.addColumn("Uout");
 btn.setVisible(true);
 btn.addActionListener(new ActionListener(){

        @Override
        public void actionPerformed(ActionEvent e) {                
            for(Vector<String> v: dataList){
                    tableMod.addRow(v);
            }       
        }
     });
  JFrame frame=new JFrame();
    frame.add(panelbtn);
    table.setPreferredScrollableViewportSize(new Dimension(500,70));
    JScrollPane scrollPane=new JScrollPane(table);
    getContentPane().add(scrollPane,BorderLayout.CENTER);
    getContentPane().add(panelbtn, BorderLayout.NORTH);
    frame.setVisible(true);
}

public void initialize(){
    //System.setProperty("gnu.io.rxtx.SerialPorts", "/dev/ttyACM0");

    CommPortIdentifier portId=null;
    Enumeration portEnum = CommPortIdentifier.getPortIdentifiers();

    while(portEnum.hasMoreElements()){
        CommPortIdentifier currPortId=(CommPortIdentifier)portEnum.nextElement();
        for(String portName : PORT_NAMES){
            if(currPortId.getName().equals(portName)){
                portId=currPortId;
                break;
            }
        }
    }
    if(portId==null){
        System.out.println("Could non find COM port");
        return;
    }

    try {
        serialPort=(SerialPort)portId.open(this.getClass().getName(),TIME_OUT);
        serialPort.setSerialPortParams(DATA_RATE, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
        input=new BufferedReader(new InputStreamReader(serialPort.getInputStream()));
        output=serialPort.getOutputStream();
        serialPort.addEventListener(this);
        serialPort.notifyOnDataAvailable(true);
        serialPort.disableReceiveTimeout();
        serialPort.enableReceiveThreshold(1);

    } catch (Exception e) {
        System.err.println(e.toString());
    }   
}

public synchronized void close(){
    if(serialPort != null){
        serialPort.removeEventListener();
        serialPort.close();
    }
}

@Override
public void serialEvent(SerialPortEvent oEvent) {
    if(oEvent.getEventType()==SerialPortEvent.DATA_AVAILABLE){
        try{
            String inputLine=input.readLine();
            String[] rows=inputLine.split(",");
            for(String row: rows){
                row=row.trim();
                lista.addAll(Arrays.asList(row.split("\n")));
                dataList.add(lista);
            }

            System.out.println(dataList);

        }catch(Exception e){
            System.err.println(e.toString());
        }return;
    }

}

public static void main(String[] args) throws Exception {

    SerialTest main=new SerialTest();
    main.initialize();
    main.setVisible(true);


    Thread t=new Thread(){
        public void run(){
            try{Thread.sleep(100000);}catch(InterruptedException ie){}

        }
    };
  t.start();
            }
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM