【发布时间】:2016-05-14 06:21:45
【问题描述】:
如何使 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())
);
在上面的 sn-p 中,connectionTglBtn 就是我们所说的按钮。
【问题讨论】:
-
你使用的布局管理器是什么?
-
@STaefi 如何检测我正在使用的布局管理器?我使用 Netbeans 工具使用 Drog&Drop 创建表单。
-
搜索
setLayout方法在您的代码中调用的位置。可能是您正在使用null布局。 -
我发现:
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());所以这意味着我正在使用GroupLayout? -
您使用
GroupLayout是正确的。组件的大小很大程度上取决于您使用的布局管理器。每个布局管理器都关心组件的子集或所有属性。例如,他们中的一些人关心size,而其他许多人关心'preferredSize'。
标签: java swing look-and-feel grouplayout jtogglebutton