如何使JToggleButton的大小在Selected和Not Selected状态下固定并相等?
如下所示,我现在有一个可变长度按钮:
未选择尺寸:
和选择的大小
我尝试了setSize()
和setPreferedSize()
方法,但没有任何变化。
当前按钮方式:
private void connectionTglBtnActionPerformed(java.awt.event.ActionEvent evt) {
if (connectionTglBtn.isSelected()) {
connectionTglBtn.setText("S");
} else {
connectionTglBtn.setText("SSSS");
}
}
更新:
这是我的布局管理器初始化方法:
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addComponent(readersComBox, javax.swing.GroupLayout.PREFERRED_SIZE, 338, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(refreshBtn)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(connectionTglBtn, javax.swing.GroupLayout.DEFAULT_SIZE, 96, Short.MAX_VALUE))
.addGroup(layout.createSequentialGroup()
.addComponent(jButton1)
.addGap(0, 0, Short.MAX_VALUE)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(readersComBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(refreshBtn)
.addComponent(connectionTglBtn))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButton1)
.addContainerGap())
);
在上面的代码片段中,
connectionTglBtn
是我们正在谈论的按钮。 最佳答案
一种方法是设置preferredSize
中的JToggleButton
,但更重要的是,如何使用GroupLayout
将按钮添加到基础容器中。 GroupLayout
可能会或可能不会在意preferredSize
属性。
参考this,您可以使用GroupLayout
的规则,如下所述:
GroupLayout定义了可以精确控制调整大小行为的常量。它们可以在addComponent(Component comp,int min,int pref,int max)方法中用作参数。这是两个示例:
强制调整组件大小(允许缩小和增长):
group.addComponent(component, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ...
这允许组件将大小调整为零(最小)到任意大小(Short.MAX_VALUE,因为最大大小表示“无穷大”)。如果我们希望组件不缩小到其默认最小大小以下,我们将使用GroupLayout.DEFAULT_SIZE而不是第二个参数中的0。
要使组件固定大小(禁止调整大小):
group.addComponent(component, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
GroupLayout.PREFERRED_SIZE) ...
在这些示例中,组件的初始大小未更改,其默认大小是组件的首选大小。如果我们想要组件的特定大小,则可以在第二个参数中指定它,而不是使用GroupLayout.DEFAULT_SIZE。
因此,在您的代码中,您拥有:
.addComponent(connectionTglBtn, javax.swing.GroupLayout.DEFAULT_SIZE, 96, Short.MAX_VALUE))
您应该根据规则2对其进行更改,以将
connectionTglBtn
强制设置为固定大小。希望这会有所帮助。