[英]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.