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



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

最新更新