1

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は、私たちが話しているボタンです。

4

1 に答える 1

3

1 つの方法は を設定preferredSizeするJToggleButtonことですが、 を使用して下のコンテナーにボタンを追加する方法がより重要ですGroupLayoutGroupLayoutプロパティを気にする場合と気にしない場合がありpreferredSizeます。

thisを参照するとGroupLayout、説明されているように のルールを使用できます。

GroupLayout は、サイズ変更動作を正確に制御する定数を定義します。これらは addComponent(Component comp, int min, int pref, int max) メソッドのパラメータとして使用できます。以下に 2 つの例を示します。

  1. コンポーネントを強制的にサイズ変更可能にする (縮小と拡大を許可する) には:
    group.addComponent(component, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ...

これにより、コンポーネントのサイズをゼロ (最小) から任意のサイズ (最大サイズは「無限」を意味するため、Short.MAX_VALUE) の間で変更できます。コンポーネントがデフォルトの最小サイズを下回らないようにする場合は、2 番目のパラメーターで 0 の代わりに GroupLayout.DEFAULT_SIZE を使用します。

  1. コンポーネントを固定サイズにするには(サイズ変更を抑制):
    group.addComponent(component, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE,
      GroupLayout.PREFERRED_SIZE) ...

これらの例では、コンポーネントの初期サイズは変更されていません。デフォルトのサイズは、コンポーネントの優先サイズです。コンポーネントに特定のサイズが必要な場合は、GroupLayout.DEFAULT_SIZE を使用する代わりに、2 番目のパラメーターで指定します。

だからあなたが持っているあなたのコードで:

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

ルール 2に従って変更し、強制的connectionTglBtn固定サイズにする必要があります。

これが役立つことを願っています。

于 2016-05-14T07:23:36.167 に答える