如何使 Selected 和 Not Selected 状态的JToggleButton大小固定且相等?
如下所示,我现在有一个可变长度按钮:
未选中尺寸:
已选择尺寸
我尝试了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
是我们正在讨论的按钮。
答案 0 :(得分:3)
一种方法是设置preferredSize
的{{1}},但更重要的是使用JToggleButton
将按钮添加到基础容器的方式。 GroupLayout
可能会也可能不关心GroupLayout
财产。
参考this,您可以按照preferredSize
的规则使用
GroupLayout定义了可以精确控制调整大小行为的常量。它们可以用作addComponent(Component comp,int min,int pref,int max)方法中的参数。以下是两个例子:
- 强制组件可调整大小(允许收缩和增长):
醇>
GroupLayout
这允许组件在零大小(最小)到任何大小之间调整大小(Short.MAX_VALUE,因为最大大小意味着“无限”)。如果我们希望组件不缩小到其默认最小大小以下,我们将在第二个参数中使用GroupLayout.DEFAULT_SIZE而不是0。
- 要使组件固定大小(禁止调整大小):
醇>
group.addComponent(component, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ...
在这些示例中,组件的初始大小不会更改,其默认大小是组件的首选大小。如果我们想要组件的特定大小,我们将在第二个参数中指定它而不是使用GroupLayout.DEFAULT_SIZE。
所以在您的代码中:
group.addComponent(component, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
GroupLayout.PREFERRED_SIZE) ...
您应该根据规则2 进行更改,以强制.addComponent(connectionTglBtn, javax.swing.GroupLayout.DEFAULT_SIZE, 96, Short.MAX_VALUE))
固定尺寸。
希望这会有所帮助。