【发布时间】:2019-11-18 11:13:15
【问题描述】:
我的代码有问题。我目前正在制作一个在 ArrayList 上存储临时数据的项目。我已经创建了代码,但是当我测试它时,ArrayList 的 add() 方法似乎不起作用。
我在jTable 上显示ArrayList,但它总是返回空,即使add() 方法给出了成功通知。
我在这里阅读了另一种解决方案,但没有一个适合我的问题。 这是我的代码。我有 3 节课
Input.java
package latihan;
import com.sun.xml.internal.ws.developer.JAXWSProperties;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
/**
*
* @author anang
*/
public class Input extends javax.swing.JFrame {
Latihan latihan = new Latihan();
/**
* Creates new form Input
*/
public Input() {
initComponents();
}
private void btnKirimActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String nik = txtNIK.getText();
String lap = txtLaporan.getText();
try {
latihan.addLaporan(nik,lap);
JOptionPane.showMessageDialog(null,"Berhasil");
Tabel t = new Tabel();
t.setVisible(true);
this.setVisible(false);
} catch (Exception e) {
JOptionPane.showMessageDialog(null,e);
}
}
public ArrayList<String[]> getLaporan(){
ArrayList<String[]> arr = latihan.getLaporan();
return arr;
}
}
二等 Latihan.java
package latihan;
import java.util.ArrayList;
import javax.swing.JOptionPane;
public class Latihan {
private ArrayList<String[]> lap = new ArrayList<String[]>();
public static void main(String[] args) {
}
public ArrayList<String[]> getLaporan(){
return this.lap;
}
public void addLaporan(String Nik, String Lap){
String[] data = new String[]{Nik,Lap};
JOptionPane.showMessageDialog(null,"Data yang diinputkan = "+Nik+" "+Lap, "Latihan.java",JOptionPane.INFORMATION_MESSAGE);
this.lap.add(data);
}
}
第三课 Tabel.java
package latihan;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
/**
*
* @author anang
*/
public class Tabel extends javax.swing.JFrame {
//Input i = new Input();
private Input input;
public Tabel() {
initComponents();
addDataToTable();
}
private void btnTambahActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
input.setVisible(true);
this.setVisible(false);
}
public void addDataToTable(){
DefaultTableModel tbModel = (DefaultTableModel) jTable1.getModel();
tbModel.setRowCount(0);
ArrayList<String[]> arr = input.getLaporan();
Object rowData[] = new Object[2];
JOptionPane.showMessageDialog(null,"Jumlah data : "+arr.size());
for(int i=0;i<arr.size();i++){
JOptionPane.showMessageDialog(null,arr.get(0)[0]);
rowData[0] = arr.get(i)[0];
rowData[1] = arr.get(i)[1];
tbModel.addRow(rowData);
}
}
}
我的代码有什么问题??有人可以帮帮我吗?
谢谢
【问题讨论】:
-
当您说“我在
jTable上显示ArrayList,但它总是返回空”时,您指的是addDataToTable在您的Tabel类中没有使用选项更新JOptionPane来自ArrayList? -
@Ambro-r,当我在
Table类中得到 arr.size() 时,它总是返回 0,即使在Latihan类中的 addLaporan() 方法之后也是如此 -
你的问题与你的堆栈和你调用类的方式有关。请参阅下面的扩展答案。
-
问题在于你的设计。摆脱 ArrayList。只需将数据直接添加到 TableModel。 TableModel 是用于存储数据的数据结构。无需将数据存储在两个地方。
-
@camickr 这是我讲师的作业,我们被分配使用 ArrayList。