JTable with 10 列在那里。需要排列动态创建的 10 个 JCheckbox,并将其排列在 JTable 上方的一行中。并将每个JCheckbox左侧位置对齐到每个单元格x坐标的第一行。
Java Swing GUI 外观: JInternalFrame-> with two JScrollpanes
(顶部和底部)
顶部区域 : JScrollpane->JPanel->JCheckbox's
(10 复选框)
底部区域 : JScrollpane->JTable
(10 列)
在这里,我想将每个复选框x与每个单元格x坐标的表格进行排列。
我尝试了下面的代码,但它不起作用。(就像表格的 10 列宽中覆盖的 5 个复选框一样)
表的列计数和复选框的创建是动态的,并且会在需要时更改。
panel.setPreferredSize(new Dimension(scrollpane.getPreferredSize().width, scrollpane.getPreferredSize().height));
int intColCount=table.getColumnCount();
int intX=0;
JCheckBox checkboxTop[] = new JCheckBox[intColCount];
JCheckBox checkboxBottom[] = new JCheckBox[intColCount];
for(int i=0;i<intColCount;i++){
intX = (int)table.getCellRect(0, i, true).getX();
checkboxTop[i]= new JCheckBox("Top "+(i+1));
panel.add(checkboxTop[i]);
checkboxTop[i].setBounds(intX, 10, 50, 10);
checkboxBottom[i]= new JCheckBox("Bottom "+(i+1));
panel.add(checkboxBottom[i]);
checkboxBottom[i].setBounds(intX, 30, 50, 10);
}
panel.setPreferredSize(new Dimension(intColCount*(int_each_cell_width), panel.getPreferredSize().height));
任何人都可以分享一些想法...
感谢所有分享逻辑的人。
在以下代码更改后,它工作正常。
//scrltbl is the scrollpane of the jtable
scrollpane.setPreferredSize(scrltbl.getPreferredSize())
int intColCount = table.getColumnCount();
panel.setLayout(new GridLayout(2, intColCount));
int intColCount=table.getColumnCount();
int intX=0;
JCheckBox checkboxTop[] = new JCheckBox[intColCount];
JCheckBox checkboxBottom[] = new JCheckBox[intColCount];
for(int i=0;i<intColCount;i++){
checkboxTop[i]= new JCheckBox("Top "+(i+1));
panel.add(checkboxTop[i]);
}
for(int i=0;i<intColCount;i++){
checkboxBottom[i]= new JCheckBox("Bottom "+(i+1));
panel.add(checkboxBottom[i]);
}
panel.updateUI();