0

各入力コンポーネント (つまり、JTextField) の上に非表示の JLabelを持つ Java Swing ダイアログがあります。この非表示の JLabel の目的は、入力コンポーネントの検証出力として使用することです。

いくつかのエンティティの説明用の入力フィールドがあり、それは空ではなく、いくつかの特別なものを含む必要があるとしましょう。エラーが発生した場合、アクションは次のメソッドを呼び出すことができます。

private void invalidateDescription(String errMessage) {
    errDescriptionLabel.setText(errMessage);                      
    errDescriptionLabel.setVisible(true);
    descriptionTextField.setBackground(ERR_COLOR);
}

その後、電話pack()して、invalidate()

問題は、JDialog の垂直方向のサイズが同じままであるため、一部のコンポーネント (ダイアログの下部にあるボタン) が (ビューの外にあるため) 消えてしまうことです。

それを修正する方法について何か提案はありますか?

よろしくお願いします。

編集:JDialogには「フリーデザイン」レイアウト(Netbeans GUIビルダーのデフォルト)があることを忘れていました。編集 2: (エラー) JLabel のプレースホルダーを必要としないソリューションを探しています。ダイアログのバランスが取れていないため、「空のスペース」は望ましい解決策ではありません。

4

3 に答える 3

1

各入力コンポーネントの上に非表示の JLabel を持つ Java Swing ダイアログがあります

これには非表示のコンポーネントは使用しません。私なら、変えるね:

private void invalidateDescription(String errMessage)

private void invalidateDescription(String errMessage, component inputComponent)

次に、エラー メッセージを含むポップアップを表示します。装飾されていない JDialog をポップアップとして使用できます。JPopupMenu をポップアップとして使用することもできます。

ポップアップを表示するときは、ポップアップを入力コンポーネントに相対的に配置します。

于 2013-06-06T15:11:35.900 に答える
1

CardLayout必要に応じて、ラベルを配置し、空のJPanelsans スワップ thmを使用します。

于 2013-06-06T12:23:21.780 に答える
1

setVisible()を使用する代わりにerrDescriptionLabel、エントリが有効な場合に囲んでいるパネルの背景色と一致する背景色を指定します。

于 2013-06-06T13:14:24.943 に答える