Java-如何调整GroupLayout中组件的大小



我对GroupLayout有问题。我的代码是:

public chat () {
        JTextField chatbox;
        JTextField msgbox;
        JButton sendbutton;
        GroupLayout layout;
        super();
        chatbox = new JTextField();
        msgbox = new JTextField();
        sendbutton = new JButton("Send");
        layout = new GroupLayout(this);
        sendbutton.setPreferredSize(new Dimension(60, 20));
        setBackground(new Color(255, 255, 255));
        setLayout(layout);
        layout.setAutoCreateGaps(true);
        layout.setAutoCreateContainerGaps(true);
        layout.setHorizontalGroup(layout.createParallelGroup()
            .addComponent(chatbox)
            .addGroup(layout.createSequentialGroup()
                .addComponent(msgbox)
                .addComponent(sendbutton))
        );
        layout.linkSize(SwingConstants.HORIZONTAL, sendbutton);
        layout.setVerticalGroup(layout.createSequentialGroup()
            .addComponent(chatbox)
            .addGroup(layout.createParallelGroup()
                .addComponent(msgbox)
                .addComponent(sendbutton))
        );
}

问题是Layout中的组件尽可能大。我不能限制这个尺寸。问题是,例如,如何设置物品的恒定高度?

或者从另一方面来说,调整窗口大小时调用哪个函数?我可以重写这个函数,getSize of parent JPanel(它在JPanel中),然后根据百分比设置大小吗?你觉得怎么样?

//问题解决了。

从底部开始的第五行更改

.addGroup(layout.createParallelGroup()

对于

.addGroup(layout.createParallelGroup(BASELINE)

谢谢大家的帮助。

我之所以添加这个,是因为乍一看,答案并不是很清楚,尽管它确实很好地回答了我自己版本的这个问题:-)

基本上,在GroupLayout中创建垂直组时,如果您希望组件处于其首选高度(在大多数情况下),可以添加参数GroupLayout.Aligent.BASELINE.

我会解释BASELINE的论点,但Oracle的文档(http://docs.oracle.com/javase/7/docs/api/javax/swing/GroupLayout.ParallelGroup.html)做得更好:

基线是基于具有基线的每个元素的首选高度来计算的。基线是使用以下算法计算的:max(maxNonBaselineHeight,maxAscent+maxDescent),其中maxNonBaseline height是没有基线或未沿基线对齐的所有元素的最大高度。

正如其他人所说,不应该使用setMaximumSize(),我建议查看上面提到的链接@kleopatra以了解更多信息。

顺便说一句,问题末尾的代码似乎并不完全正确(至少当我尝试类似的东西时)。据我所知,从底部开始的第五行应该是

.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)

而不是

.addGroup(layout.createParallelGroup(BASELINE)
组件对象中的

setMaximumSize()。

相关内容

  • 没有找到相关文章

最新更新