2016-05-14 6 views
1

Wie wird die Größe von JToggleButton festgelegt und für beide gleich ausgewählt und Nicht ausgewählt states?Wie wird die JToggleButton-Größe bei Auswahl und Abwahl festgelegt?

Wie Sie unten sehen, ich habe eine variable Länge Knopf jetzt:

Nicht Größe ausgewählt:

enter image description here

Und Ausgewählte Größe

enter image description here

Ich versuchte setSize() und setPreferedSize() Methoden, aber nichts geändert.

Aktuelle Taste Methode:

private void connectionTglBtnActionPerformed(java.awt.event.ActionEvent evt) {             

     if (connectionTglBtn.isSelected()) { 
      connectionTglBtn.setText("S"); 
     } else { 
      connectionTglBtn.setText("SSSS"); 
     } 
} 

Update:

Hier ist mein Layout-Manager Initialisierungsmethode:

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()) 
); 

In dem obigen Snippet wird connectionTglBtn die Schaltfläche, die wir reden über.

+0

Was ist der Layout-Manager, den Sie verwenden? – STaefi

+0

@STaefi Wie kann ich feststellen, welchen Layout-Manager ich verwende? Ich habe Netbeans-Tools verwendet, um mein Formular mit Drog & Drop zu erstellen. – EbraHim

+0

Suche nach wo ist 'setLayout' Methode in Ihrem Code aufgerufen. Möglicherweise verwenden Sie das Layout 'null'. – STaefi

Antwort

3

Eine Möglichkeit besteht darin, preferredSize Ihrer JToggleButton festzulegen, aber es ist wichtiger, dass Ihre Schaltfläche zum zugrunde liegenden Container mit GroupLayout hinzugefügt wird. GroupLayout kann oder möglicherweise nicht über die preferredSize Eigenschaft kümmern.

Mit Bezug auf this, können Sie die Regeln von GroupLayout wie beschrieben verwenden:

Grouplayout definiert Konstanten, die eine genaue Kontrolle über Resize-Verhalten liefern. Sie können als Parameter in der Methode addComponent (Component comp, int min, int pref, int max) verwendet werden. Hier sind zwei Beispiele:

  1. Um eine Komponente zu zwingen resizable zu sein (damit schrumpfende und wachsende):
group.addComponent(component, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ... 

Dies ermöglicht die Komponente zwischen Null Größe (Minimum), um die Größe zu jeder Größe (Short.MAX_VALUE als maximale Größe bedeutet "unendlich"). Wenn die Komponente nicht unter die Standardminimalgröße schrumpfen soll, wird GroupLayout.DEFAULT_SIZE anstelle von 0 im zweiten Parameter verwendet.

  1. Um eine Komponente feste Größe (unterdrücken Ändern der Größe) zu machen:
group.addComponent(component, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, 
     GroupLayout.PREFERRED_SIZE) ... 

In diesen Beispielen wird die Anfangsgröße der Komponente nicht geändert, seine Standardgröße ist die bevorzugte Größe der Komponente. Wenn wir eine bestimmte Größe für die Komponente wollten, würden wir sie im zweiten Parameter angeben, anstatt GroupLayout.DEFAULT_SIZE zu verwenden.

Also in Ihrem Code, wo Sie haben:

.addComponent(connectionTglBtn, javax.swing.GroupLayout.DEFAULT_SIZE, 96, Short.MAX_VALUE)) 

Sie es nach der 2-Regel ändern sollte Ihre connectionTglBtn zu zwingen feste Größe zu sein.

Ich hoffe, das wäre hilfreich.

Verwandte Themen