2016-05-14 82 views
1

如何使JToggleButton的大小固定並等於選中未選中狀態?如何在選擇和取消選擇時固定JToggleButton大小?

正如你看到下面,我現在有一個可變長度按鈕:

未選擇大小:

enter image description here

而且選擇大小

enter image description here

我試過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

您使用的佈局管理器是什麼? – STaefi

+0

@STaefi如何檢測我使用的佈局管理器?我使用Netbeans工具使用Drog&Drop創建我的表單。 – EbraHim

+0

搜索代碼中調用'setLayout'方法的位置。可能你正在使用'null'佈局。 – STaefi

回答

3

一種方法是設置JToggleButtonpreferredSize,但更重要的是如何使用GroupLayout將按鈕添加到底層容器。 GroupLayout可能會或可能不會在意preferredSize屬性。

參照​​3210,可以使用的GroupLayout規則描述:

的GroupLayout定義了提供優於調整大小行爲的精確控制常數。它們可以用作addComponent(Component comp,int min,int pref,int max)方法中的參數。下面是兩個例子:

  1. 要強制的組分是可調整大小(允許收縮和生長):
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固定大小改變它。

    希望這將是有益的。