Java Swing-JTable未显示在滚动窗格中
我创建了一个类Java Swing-JTable未显示在滚动窗格中,java,swing,jtable,Java,Swing,Jtable,我创建了一个类Cart,里面是一个JTable和两个ArrayList。由于某些原因,我的JTable未显示 这是我的购物车课程: class Cart { ArrayList<Product> products = new ArrayList<>(); // Holds the products themselves ArrayList<Integer> quantities = new ArrayList<>(); // Hol
Cart
,里面是一个JTable和两个ArrayList。由于某些原因,我的JTable未显示
这是我的购物车课程:
class Cart {
ArrayList<Product> products = new ArrayList<>(); // Holds the products themselves
ArrayList<Integer> quantities = new ArrayList<>(); // Holds the quantities themselves
JTable prdTbl = new JTable(); // The GUI Product Table
DefaultTableModel prdTblModel = new DefaultTableModel(); // The Table Model
Object[] columns = {"Description","Price","Quantity","Total"}; // Column Identifiers
DecimalFormat fmt = new DecimalFormat("$#,##0.00;$-#,##0.00"); // Decimal Format for formatting USD ($#.##)
Cart() {
setTableStyle();
}
void renderTable() {
// Re-initialize the Table Model
this.prdTblModel = new DefaultTableModel();
// Set the Table Style
setTableStyle();
// Create a row from each list entry for product and quantity and add it to the Table Model
for(int i = 0; i < products.size(); i++) {
Object[] row = new Object[4];
row[0] = products.get(i).getName();
row[1] = products.get(i).getPrice();
row[2] = quantities.get(i);
row[3] = fmt.format(products.get(i).getPrice() * quantities.get(i));
this.prdTblModel.addRow(row);
}
this.prdTbl.setModel(this.prdTblModel);
}
void setTableStyle() {
this.prdTblModel.setColumnIdentifiers(columns);
this.prdTbl.setModel(this.prdTblModel);
this.prdTbl.setBackground(Color.white);
this.prdTbl.setForeground(Color.black);
Font font = new Font("Tahoma",1,22);
this.prdTbl.setFont(font);
this.prdTbl.setRowHeight(30);
}
JTable getTable() {
renderTable(); // Render Table
return this.prdTbl;
}
}
我不确定我是否遗漏了什么?在过去,它像这样工作得很好?我还尝试在
table=cart.getTable()处打印值代码>,它似乎很好地接收到了值,因此它让我相信它与Swinginitialize()
有关,而不是与我的Cart
类有关,但以防我也发布了Cart
类。您确定添加了正确的表吗?您的代码显示:
table = new JTable();
scrollPane.setViewportView(table);
我看不到表的声明位置,更多的表不包含任何内容,不包含行和列,而在actionListener中,您使用新实例初始化表:
table = cart.getTable();
但是滚动窗格包含JTable的另一个实例。您确定添加了正确的表吗?您的代码显示:
table = new JTable();
scrollPane.setViewportView(table);
我看不到表的声明位置,更多的表不包含任何内容,不包含行和列,而在actionListener中,您使用新实例初始化表:
table = cart.getTable();
但是scrollPane保存了JTable的另一个实例。看起来您从未将购物车与cartPanel相关联;我认为你的问题在于:
JPanel cartPanel = new JPanel();
你制作了新的面板,但从来没有把你的购物车挂在上面。否则看起来不错
祝你好运 看起来您从未将购物车与cartPanel相关联;我认为你的问题在于:
JPanel cartPanel = new JPanel();
你制作了新的面板,但从来没有把你的购物车挂在上面。否则看起来不错
祝你好运 如果您想按照@ugo的建议将initialize()中的新表与购物车表关联起来,也可以这样做。很高兴@TommyYamakaitis,很高兴我能提供帮助!如果您想按照@ugo的建议将initialize()中的新表与购物车表关联起来,也可以这样做。很高兴@TommyYamakaitis,很高兴我能提供帮助!在你发布之前我才意识到。谢谢@ugoI在你发布之前才意识到这一点。谢谢@ugo