如何在java中使用for循环或嵌套for循环填充二维数组
我有一个2D数组,它的类型是object。我想填充这个二维数组。但我对此一无所知 这是我已经知道的如何在java中使用for循环或嵌套for循环填充二维数组,java,arraylist,multidimensional-array,Java,Arraylist,Multidimensional Array,我有一个2D数组,它的类型是object。我想填充这个二维数组。但我对此一无所知 这是我已经知道的 public TableRowHeaderTest(List<Employee> list){ Object rowData1[][] = new Object[list.size()][]; Object columnNames1[] ={"HEADER 1", "HEADER 2", "HEADER 3", "HEADER 4", "HEADER 5", "HEA
public TableRowHeaderTest(List<Employee> list){
Object rowData1[][] = new Object[list.size()][];
Object columnNames1[] ={"HEADER 1", "HEADER 2", "HEADER 3", "HEADER 4", "HEADER 5", "HEADER 6", "HEADER 7", "HEADER 8", "HEADER 9", "HEADER 10", "HEADER 11", "HEADER 12", "HEADER 13"};
JTable table1 = new TableWithRowHeader(rowData1, columnNames1);
table1.getColumnModel().getColumn(0).setPreferredWidth(120);
JScrollPane scrollPane1 = new JScrollPane(table1);
scrollPane1.setColumnHeaderView(null);
JFrame frame = new JFrame("Testing");
frame.setLayout(new BorderLayout());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(jPanel, BorderLayout.NORTH);
frame.add(scrollPane1);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public class TableWithRowHeader extends JTable{
private TableRowHeader rowHeader;
public TableWithRowHeader(final Object[][] rowData, final Object[] columnNames)
{
super(rowData, columnNames);
rowHeader = new TableRowHeader(this);
}
@Override
protected void configureEnclosingScrollPane()
{
// This is required as it calls a private method...
super.configureEnclosingScrollPane();
Container parent = SwingUtilities.getUnwrappedParent(this);
if (parent instanceof JViewport)
{
JViewport port = (JViewport) parent;
Container gp = port.getParent();
if (gp instanceof JScrollPane)
{
JScrollPane scrollPane = (JScrollPane) gp;
JViewport viewport = scrollPane.getViewport();
if (viewport == null || SwingUtilities.getUnwrappedView(viewport) != this)
{
return;
}
scrollPane.setColumnHeaderView(null);
scrollPane.setRowHeaderView(rowHeader);
}
}
}
}
public class TableRowHeader extends JTableHeader{
private JTable table;
public TableRowHeader(JTable table)
{
super(table.getColumnModel());
this.table = table;
table.getColumnModel().addColumnModelListener(new TableColumnModelListener()
{
@Override
public void columnAdded(TableColumnModelEvent e)
{
repaint();
}
@Override
public void columnRemoved(TableColumnModelEvent e)
{
repaint();
}
@Override
public void columnMoved(TableColumnModelEvent e)
{
repaint();
}
@Override
public void columnMarginChanged(ChangeEvent e)
{
repaint();
}
@Override
public void columnSelectionChanged(ListSelectionEvent e)
{
// Don't care about this, want to highlight the row...
}
});
table.getSelectionModel().addListSelectionListener(new ListSelectionListener()
{
@Override
public void valueChanged(ListSelectionEvent e)
{
repaint();
}
});
}
public JTable getTable()
{
return table;
}
@Override
public Dimension getPreferredSize()
{
Dimension size = new Dimension();
JTable table = getTable();
if (table != null)
{
TableColumnModel model = table.getColumnModel();
if (model != null)
{
for (int index = 0; index < model.getColumnCount(); index++)
{
TableColumn column = model.getColumn(index);
TableCellRenderer renderer = column.getHeaderRenderer();
if (renderer == null)
{
renderer = getDefaultRenderer();
}
Component comp = renderer.getTableCellRendererComponent(table, column.getHeaderValue(), false, false, -1, index);
size.width = Math.max(comp.getPreferredSize().width, size.width);
size.height += table.getRowHeight(index);
}
}
}
return size;
}
/**
* Overridden to avoid propagating a invalidate up the tree when the
* cell renderer child is configured.
*/
@Override
public void invalidate()
{
}
/**
* If the specified component is already a child of this then we don't
* bother doing anything - stacking order doesn't matter for cell
* renderer components (CellRendererPane doesn't paint anyway).
*/
@Override
protected void addImpl(Component x, Object constraints, int index)
{
if (x.getParent() == this)
{
} else
{
super.addImpl(x, constraints, index);
}
}
@Override
protected void paintComponent(Graphics g)
{
Graphics2D g2d = (Graphics2D) g.create();
g2d.setColor(getBackground());
g2d.fillRect(0, 0, getWidth(), getHeight());
JTable table = getTable();
if (table != null)
{
int width = getWidth();
TableColumnModel model = table.getColumnModel();
if (model != null)
{
for (int index = 0; index < model.getColumnCount(); index++)
{
TableColumn column = model.getColumn(index);
TableCellRenderer renderer = column.getHeaderRenderer();
if (renderer == null)
{
renderer = getDefaultRenderer();
}
boolean selected = table.getSelectedRow() == index;
Component comp = renderer.getTableCellRendererComponent(table, column.getHeaderValue(), selected, false, 0, index);
add(comp);
comp.validate();
int height = table.getRowHeight(index) - 1;
comp.setBounds(0, 0, width, height);
comp.paint(g2d);
comp.setBounds(-width, -height, 0, 0);
g2d.setColor(table.getGridColor());
g2d.drawLine(0, height, width, height);
g2d.translate(0, height + 1);
}
}
}
g2d.dispose();
removeAll();
}
}
公共表RowHeaderTest(列表){
对象rowData1[][]=新对象[list.size()][];
对象列名称1[]={“标题1”、“标题2”、“标题3”、“标题4”、“标题5”、“标题6”、“标题7”、“标题8”、“标题9”、“标题10”、“标题11”、“标题12”、“标题13”};
JTable table 1=新的表格,带有行标题(行数据1,列名称1);
表1.getColumnModel().getColumn(0).setPreferredWidth(120);
JScrollPane scrollPane1=新的JScrollPane(表1);
scrollPane1.setColumnHeaderView(空);
JFrame=新JFrame(“测试”);
frame.setLayout(新的BorderLayout());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(jPanel,BorderLayout.NORTH);
frame.add(滚动窗格1);
frame.pack();
frame.setLocationRelativeTo(空);
frame.setVisible(true);
}
公共类TableWithRowHeader扩展了JTable{
私有表行标头;
公共表WithRowHeader(最终对象[][]行数据,最终对象[]列名称)
{
超级(行数据、列名称);
rowHeader=新表rowHeader(此);
}
@凌驾
受保护的void配置EnclosuringScrollPane()
{
//这是必需的,因为它调用私有方法。。。
super.configureEnclosuringScrollPane();
容器父级=SwingUtilities.getUnwrappedParent(此);
if(JViewport的父实例)
{
JViewport=(JViewport)父对象;
容器gp=port.getParent();
if(JScrollPane的gp实例)
{
JScrollPane滚动窗格=(JScrollPane)gp;
JViewport viewport=scrollPane.getViewport();
if(viewport==null | | SwingUtilities.getUnwrappedView(viewport)!=this)
{
返回;
}
scrollPane.setColumnHeaderView(null);
scrollPane.setRowHeaderView(rowHeader);
}
}
}
}
公共类TableRowHeader扩展了JTableHeader{
专用JTable表;
公共表格行标题(JTable表格)
{
super(table.getColumnModel());
this.table=表格;
table.getColumnModel().addColumnModelListener(新的TableColumnModelListener())
{
@凌驾
添加了公共无效列(TableColumnModelEvent e)
{
重新油漆();
}
@凌驾
已删除公共无效列(TableColumnModelEvent e)
{
重新油漆();
}
@凌驾
已移动公共空栏(TableColumnModelEvent e)
{
重新油漆();
}
@凌驾
公共无效列边际变更(变更事件e)
{
重新油漆();
}
@凌驾
公共无效列SelectionChanged(ListSelectionEvent e)
{
//不关心这个,想突出显示行。。。
}
});
table.getSelectionModel().addListSelectionListener(新ListSelectionListener())
{
@凌驾
public void值已更改(ListSelectionEvent e)
{
重新油漆();
}
});
}
公共JTable getTable()
{
返回表;
}
@凌驾
公共维度getPreferredSize()
{
维度大小=新维度();
JTable table=getTable();
如果(表!=null)
{
TableColumnModel=table.getColumnModel();
如果(型号!=null)
{
对于(int index=0;index