试图在 JScrollPane 的 JTable 中获取二维数组 Java
Trying to get two dimensional Array in JTable in JScrollPanel Java
我的计划是将一个二维数组放入JTable放入JScrollPanel。 Table 已经显示了二维数组的数据。问题是当我将它添加到 jscrollpanel 时 table 不会显示(滚动面板虽然可见但为空。当我将 table 放在 JPanel(不是 jscrollpanel)中时它确实有效。但在使用 jscrollpanel 时不是。
有人知道吗?
package arraytablestable;
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
public class ArrayTablesTable extends JFrame {
public static JFrame frame;
public static void main(String[] args) {
frame = new JFrame();
frame.setSize(1280,720);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("Array Table 7 in Tables");
frame.setContentPane(new Paneel());
frame.setVisible(true);
}
private static class Paneel extends JPanel {
// Declareren
public static JTable Table;
public JTableHeader tblHeader;
public TableModel tblModel;
public Object[] columnNames;
public static Object[][] Data;
public int Resultaat, a ,i ;
public JScrollPane jScrollPane;
public Paneel() {
this.setLayout(new GridLayout(1,1));
// Initialiseren
Data = new Object[200][1];
columnNames = new Object[]{"Product","Resultaat"};
// Model maken & importen
tblModel = new DefaultTableModel(columnNames,0);
Table = new JTable(tblModel);
// Table Eigenschaooen
// tblHeader = Table.getTableHeader();
// tblHeader.setBackground(Color.decode("#a181a1"));
// tblHeader.setForeground(Color.decode("#1b1b1b"));
// Table.setFocusable(false);
// Table.setRowSelectionAllowed(false);
Data[0] = new String[100];
Data[1] = new Integer[100];
// For Loop
for(i = 0; i < 100; i++){
Data[0][i]= "7 x " + i;
Resultaat = 7 * i;
Data[1][i]= Resultaat;
TabelVullen(new Object[]{Data[0][i],Data[1][i]});
}
System.out.println("object: " + Data[0][4]);
this.add(jScrollPane);
}
public void TabelVullen(Object[] data){
((DefaultTableModel)Table.getModel()).addRow(data);
// Components -> Panel
jScrollPane = new JScrollPane(Table);
jScrollPane.add(Table);
}
}
}
jScrollPane = new JScrollPane(Table);
上面一行是正确的。它创建滚动窗格并将 table 添加到滚动窗格的 "viewport"。
//jScrollPane.add(Table);
上面一行是不正确的。它从滚动窗格的视口中删除 table。切勿使用滚动窗格的 add(...) 方法。必须将所有组件添加到视口。
了解遵循 Java 命名约定。变量名称不应以大写字符开头。 "Table" 应该是 "table"。所有其他名称都遵循此标准。保持一致!!!
此外,方法名称不应以大写字符 (TabelVullen) 开头。
我的计划是将一个二维数组放入JTable放入JScrollPanel。 Table 已经显示了二维数组的数据。问题是当我将它添加到 jscrollpanel 时 table 不会显示(滚动面板虽然可见但为空。当我将 table 放在 JPanel(不是 jscrollpanel)中时它确实有效。但在使用 jscrollpanel 时不是。
有人知道吗?
package arraytablestable;
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
public class ArrayTablesTable extends JFrame {
public static JFrame frame;
public static void main(String[] args) {
frame = new JFrame();
frame.setSize(1280,720);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("Array Table 7 in Tables");
frame.setContentPane(new Paneel());
frame.setVisible(true);
}
private static class Paneel extends JPanel {
// Declareren
public static JTable Table;
public JTableHeader tblHeader;
public TableModel tblModel;
public Object[] columnNames;
public static Object[][] Data;
public int Resultaat, a ,i ;
public JScrollPane jScrollPane;
public Paneel() {
this.setLayout(new GridLayout(1,1));
// Initialiseren
Data = new Object[200][1];
columnNames = new Object[]{"Product","Resultaat"};
// Model maken & importen
tblModel = new DefaultTableModel(columnNames,0);
Table = new JTable(tblModel);
// Table Eigenschaooen
// tblHeader = Table.getTableHeader();
// tblHeader.setBackground(Color.decode("#a181a1"));
// tblHeader.setForeground(Color.decode("#1b1b1b"));
// Table.setFocusable(false);
// Table.setRowSelectionAllowed(false);
Data[0] = new String[100];
Data[1] = new Integer[100];
// For Loop
for(i = 0; i < 100; i++){
Data[0][i]= "7 x " + i;
Resultaat = 7 * i;
Data[1][i]= Resultaat;
TabelVullen(new Object[]{Data[0][i],Data[1][i]});
}
System.out.println("object: " + Data[0][4]);
this.add(jScrollPane);
}
public void TabelVullen(Object[] data){
((DefaultTableModel)Table.getModel()).addRow(data);
// Components -> Panel
jScrollPane = new JScrollPane(Table);
jScrollPane.add(Table);
}
}
}
jScrollPane = new JScrollPane(Table);
上面一行是正确的。它创建滚动窗格并将 table 添加到滚动窗格的 "viewport"。
//jScrollPane.add(Table);
上面一行是不正确的。它从滚动窗格的视口中删除 table。切勿使用滚动窗格的 add(...) 方法。必须将所有组件添加到视口。
了解遵循 Java 命名约定。变量名称不应以大写字符开头。 "Table" 应该是 "table"。所有其他名称都遵循此标准。保持一致!!!
此外,方法名称不应以大写字符 (TabelVullen) 开头。