4

一部のテキストフィールドが水平方向にサイズ変更可能で、最大幅も指定されている GUI を作成したいと思います。たとえば、推奨される幅は 100 ピクセルです。ウィンドウのサイズを変更すると、幅が大きくなる可能性がありますが、許容される最大幅は 200 ピクセルです。GroupLayoutはこれをサポートしており、 addComponentメソッドで最大サイズを指定できます(最小値と優先値と共に)。

Netbeans とSwing GUI Builder (Matisse)を使用しています。テキストフィールドをサイズ変更可能に設定でき、好みのサイズを設定できますが、最大サイズ (および最小サイズ) を設定する場所が見つかりませんでした。プロパティ シートのレイアウト セクションは次のとおりです。

代替テキスト http://img690.imageshack.us/img690/3523/netbeanstfproplayout.png

最大サイズを設定できないShort.MAX_VALUEため、代わりに Netbeans が使用するため、テキストフィールドのサイズを変更できる場合は上限がありません。コンポーネントのプロパティも設定しようとしましたmaximumSizeが、効果がなく、無視されます。

.formファイルを手動で編集すると、そのmax="32767"部分を変更できmax="200"、Netbeans は正しいコードを生成します。ファイルを手動で編集せずに設定する方法はあり.formますか?

4

2 に答える 2

0

コンポーネントのサイズ設定に関して、 JTextFieldコンポーネントで使用できるオプションを調べていました。これらの設定はLayoutManagerへの提案 (ヒント)です。最終的に、LayoutManagerがコンポーネントのサイズを決定します。Matisse と .form オブジェクトの場合、レイアウトは .form パラメータによって完全に制御されます。標準 API から .form オブジェクトを操作する自動化された方法はありません。

既存の Swing オブジェクトから .form オブジェクトを生成するために設計されたFormGeneratorというツールがあります。これを使用して、.form ファイルを動的に操作できる場合があります。

于 2012-12-14T15:16:27.297 に答える
0

initComponentsFix()自動生成されたinitComponents()メソッドの後に追加することで、この問題を解決しました。次に、次のようにプログラムで最大サイズを設定できます。

private void initComponentsFix()
{
    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
    this.setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addComponent(jTabbedPaneTravelForms, javax.swing.GroupLayout.DEFAULT_SIZE, 800, 900) //changed max size
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addComponent(jTabbedPaneTravelForms, javax.swing.GroupLayout.DEFAULT_SIZE, 1228, Short.MAX_VALUE)
    );
}

基本的に、メソッドに組み込まれているレイアウトをオーバーライドし、initComponents()最大サイズを の代わりに必要な幅に設定しShort.MAX_VALUEます。これは私にとってはうまくいきました。プロパティで設定された最大サイズと最小サイズのときに、ウィンドウのサイズ変更が停止しました。

この質問は古いですが、それでも誰かの役に立てば幸いです。次の回答Netbeans 6.7.1 mainPanel resizing problemの助けを借りて、この問題を解決しました。

于 2013-10-01T09:08:41.420 に答える