首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GridBagLayout锚

GridBagLayout锚
EN

Stack Overflow用户
提问于 2014-08-04 09:16:54
回答 1查看 131关注 0票数 0

我试图使用Anchor设置我的组件的对齐方式。这是我的代码:

代码语言:javascript
复制
public void intiConOpt()
{
    /*********************************** connection options ****************************************/
    
    conOptGBC.insets = new Insets(5, 5, 5, 5);
    conOptGBC.weightx = 1.0;
    conOptGBC.weighty = 1.0;
    conOptGBC.anchor = GridBagConstraints.NORTHWEST;
    conOpt = new JPanel();
    conOpt.setLayout(new GridBagLayout());
    
    //////////////////////////////////////////cycle time////////////////////////////////////////////
    
    readPeriodLabel = new JLabel("Node read cycle time:");
    conOptGBC.gridx = 0;
    conOptGBC.gridy = 0;
    conOpt.add(readPeriodLabel, conOptGBC);
    
    readPeriodNumberModel = new SpinnerNumberModel();
    readPeriodSpinner = new JSpinner(readPeriodNumberModel);
    JSpinner.NumberEditor readPeriodEditor = new JSpinner.NumberEditor(readPeriodSpinner,"###");
    readPeriodSpinner.setEditor(readPeriodEditor);
    readPeriodNumberModel.setValue(TopologyMain.settings.getSettingsList().get("nodeReadingCycleTime"));

    readPeriodSpinner.setPreferredSize(new Dimension(40, 20));
    conOptGBC.gridx = 1;
    conOptGBC.gridy = 0;
    conOpt.add(readPeriodSpinner, conOptGBC);
    
    readPeriodLabel2 = new JLabel("<html><font size=2>(4-180 sec)</font></html>");
    conOptGBC.gridx = 2;
    conOptGBC.gridy = 0;
    conOpt.add(readPeriodLabel2, conOptGBC);
    
    ///////////////////////////////////////////time out////////////////////////////////////////////
    
    cliTimeoutLabel = new JLabel("CLI response timeout:");
    conOptGBC.gridx = 0;
    conOptGBC.gridy = 1;
    conOpt.add(cliTimeoutLabel, conOptGBC);
    
    cliTimeoutNumberModel = new SpinnerNumberModel();
    cliTimeoutSpinner = new JSpinner(cliTimeoutNumberModel);
    JSpinner.NumberEditor cliTimeoutEditor = new JSpinner.NumberEditor(cliTimeoutSpinner,"###");
    cliTimeoutSpinner.setEditor(cliTimeoutEditor);
    cliTimeoutNumberModel.setValue(TopologyMain.settings.getSettingsList().get("cliTimeout") /10);

    cliTimeoutSpinner.setPreferredSize(new Dimension(40, 20));
    conOptGBC.gridx = 1;
    conOptGBC.gridy = 1;
    conOpt.add(cliTimeoutSpinner, conOptGBC);
    
    cliTimeoutLabel2 = new JLabel("<html><font size=2>(8-999 sec)</font></html>");
    conOptGBC.gridx = 2;
    conOptGBC.gridy = 1;
    conOpt.add(cliTimeoutLabel2, conOptGBC);
    
    ///////////////////////////////////////busy response//////////////////////////////////////////////
            
    cliBusySleepLabel = new JLabel("CLI busy check time:");
    conOptGBC.gridx = 0;
    conOptGBC.gridy = 2;
    conOpt.add(cliBusySleepLabel, conOptGBC);
    
    cliBusySleepNumberModel = new SpinnerNumberModel();
    cliBusySleepSpinner = new JSpinner(cliBusySleepNumberModel);
    JSpinner.NumberEditor cliBusySleepEditor = new JSpinner.NumberEditor(cliBusySleepSpinner,"###");
    cliBusySleepSpinner.setEditor(cliBusySleepEditor);
    cliBusySleepNumberModel.setValue(TopologyMain.settings.getSettingsList().get("cliBusySleep") /1000);
    
    cliBusySleepSpinner.setPreferredSize(new Dimension(40, 20));
    conOptGBC.gridx = 1;
    conOptGBC.gridy = 2;
    conOpt.add(cliBusySleepSpinner, conOptGBC);
    
    cliBusySleepLabel2 = new JLabel("<html><font size=2>(1-999 sec)</font></html>");
    conOptGBC.gridx = 2;
    conOptGBC.gridy = 2;
    conOpt.add(cliBusySleepLabel2, conOptGBC);
    conOpt.setVisible(false);
    contentPanel.add(conOpt);
}

我的问题是GridBagConstraints锚没有影响,我的组件仍然在面板的中心。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-04 10:32:51

anchor属性工作正常,您遇到的问题是.

代码语言:javascript
复制
conOptGBC.weightx = 1.0;
conOptGBC.weighty = 1.0;

问题是,您已经要求GridBagLayout为每一列分配等量的空间,所以在这种情况下,它们将占用第三列,这就是要考虑的问题。

通过移除conOptGBC.weightx = 1.0;你得到..。

有点难看,但如果我们加些指南.

你可以看到田野开始向西北方向倾斜.

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25115313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档