如何在JTable上方的运行时将JCheckBox排成一行,与每个单元x坐标的第一行对齐?

时间:2015-02-03 08:44:13

标签: java swing jtable location jcheckbox

有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));

任何人都可以分享一些想法......

1 个答案:

答案 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();