有10列的JTable。需要安排动态创建的10个JCheckbox并将其排列在JTable上方的行中。并将每个JCheckbox左侧位置与每个单元格x坐标的jtable第一行对齐。
Java Swing GUI外观:
JInternalFrame-> with two JScrollpanes
(顶部和底部)
热门区域:JScrollpane->JPanel->JCheckbox's
(10个复选框)
底部区域:JScrollpane->JTable
(10列)
这里我想安排每个复选框x坐标与每个单元格x坐标的表格。
我尝试了下面的代码,但它不起作用。 (就像在表格的5列宽度中覆盖的10个复选框一样)
表格的列数和复选框的创建是动态的,并且会在需要时更改。
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));
任何人都可以分享一些想法......
答案 0 :(得分:0)
感谢所有分享逻辑的人。
在下面的代码更改后,它工作正常。
//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();