DefaultTableModel을 사용하는 JTable이있는 GUI가 있습니다.DefaultTableModel getValueAt 메서드는 겉으로보기에 무작위 결과를 생성합니다.
이러한 인스턴스 변수 선언 :
boolean doRun = false;
Class clazz;
Object obyect;
DefaultTableModel model;
ArrayList<String> al = new ArrayList();
테이블이 채워된다 변수에 대한 정보를 포함
public StatusGUI(Object invokerObject) {
initComponents();
setLocationRelativeTo(null);
clazz = invokerObject.getClass();
obyect = invokerObject;
String line;
try {
Field[] fields = clazz.getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
if (!fields[i].isAccessible()) {
fields[i].setAccessible(true);
}
if (("" + fields[i].getType()).equals("class java.lang.String")) {
line = "String";
} else {
line = "" + fields[i].getType();
}
//Note: The first string in the Object is the description, which is left empty
model.insertRow(0, new Object[]{"", fields[i].getName(), line, "" + fields[i]});
}
} catch (Exception ex) {
ex.printStackTrace();
}
setVisible(true);
}
이 (이 경우에) 발생 5 행.
내가받을 다음과 같은 코드로 버튼을 누를 때에 이러한 변수의 정보를 저장할:
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
for (int i = 0; i < model.getRowCount(); i++) {
String description = "" + model.getValueAt(i, 0);
System.out.println("Description " + i + ": " + description);
String name = "" + model.getValueAt(i, 3);
if (!description.equals("") && description != null) {
al.add(description + "::" + name);
}
}
if (al.isEmpty()) {
JOptionPane.showMessageDialog(this, "No descriptions were added to any of the variables."
+ "\nThis could also be because no variables were found - if so, please see 'Help'");
} else {
new Thread(new SendThread(al, obyect)).start();
this.dispose();
}
}
다섯 개 모든 행에 설명을 추가, 위의 코드는 다음과 같은 출력이 생성
Description 0: d1
Description 1: d2
Description 2: d3
Description 3: d4
Description 4:
경우에만 JTable가 첫 번째 행에 대한 설명을 추가하는 상기 코드 생성
0,123,221이것은 5 개의 행 모두를 인식하지만 일부 이유로 인해 행에서 읽을 때 엉망입니다.
저는 한 시간 동안 동일한 코드 라인을보고 있었으며 솔직히 잘못된 점을 보지 못했습니다.
미리 감사드립니다. 마이크.
배터리가 포함되어 있지 않습니다. +1 – mKorbel
고마워요, 저를 위해서 :) 하지만 생성자에서이 작업을 수행 할 수없는 이유는 무엇입니까? stopCellEditing()을 단순히 실행하면 nullpointer가 나타납니다. statement –
그런 다음 아직 테이블을 만들지 않았거나 isEditing() 확인을하지 않았습니다. 그러나 생성자 내부에서 편집을 중지하면 그 시점에서 테이블이 아직 화면에 표시되지 않기 때문에 아무런 의미가 없습니다. –