GridLayout不起作用

时间:2016-10-19 21:30:49

标签: java swing oop layout-manager grid-layout

这是我的代码:

PresidentVote(){
        setName("PresCandidate");
        setBorder(BorderFactory.createTitledBorder("Candidates for President"));

        for(int row=0; row<PresidentTable.tblNatPresident.getRowCount(); row++){
            setLayout(new GridLayout(row, 2));
            String name=PresidentTable.tblNatPresident.getValueAt(row, 0).toString();

            JLabel lblName=new JLabel(name);
            JRadioButton radioVote=new JRadioButton();
            lblName.setBorder(BorderFactory.createLineBorder(Color.RED));

            add(lblName); add(radioVote);
        }
    }

但是出现的那个看起来像这样:

enter image description here

我试图达到这样的目的:

  

名称|单选按钮

     

名称|单选按钮

,行数取决于jtables的行数。并且只有两列。

我真的不知道我的意思是我违反了代码中的内容吗?还是有什么我应该为它正确工作?请非常感谢你:))

2 个答案:

答案 0 :(得分:1)

如果您希望将单选按钮和标签放在一个单元格中,请将它们包裹在面板中,然后将面板放入单元格中。请记住,面板需要它自己的布局(尽管默认的流程布局可能适合你)

作为替代方案,我认为设置单选按钮的文本(标签?)可能更清晰(虽然灵活性稍差)。

答案 1 :(得分:1)

对于初学者,您需要在循环之前移动setLayout,因为它无缘无故地覆盖每次迭代,因此您需要将y值更改为行数。其次,更改交换网格布局中的值,使其看起来像这样......

setLayout(new GridLayout(2, PresidentTable.tblNatPresident.getRowCount()));