resize对话框

tzcvj98z  于 2021-06-30  发布在  Java
关注(0)|答案(3)|浏览(365)

我有一个javaswing对话框,在每个输入组件(即jtextfield)上方都有一个隐藏的jlabel。这个隐藏jlabel的目的是将其用作输入组件的验证输出。
比如说,有一个输入字段用于描述某个实体,它必须是非空的,并且应该包含一些特殊的内容。出现错误时,操作可以调用以下方法:

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

之后,我打电话给你 pack() 以及 invalidate() 问题是,jdialog仍然具有相同的垂直大小,因此一些组件(对话框底部的按钮)无法显示(因为它们不在视图中)。
你有什么建议怎么修吗?
致以最诚挚的问候。
编辑:我不想提,jdialog有一个“自由设计”布局(netbeansguibuilder默认)。编辑2:我正在寻找一种不需要(error)jlabel占位符的解决方案。”“空白”不是理想的解决方案,因为对话框看起来不平衡。

93ze6v8z

93ze6v8z1#

我有一个javaswing对话框,每个输入组件上面都有一个隐藏的jlabel
我不会为此使用隐藏组件。我会改变:

private void invalidateDescription(String errMessage)

private void invalidateDescription(String errMessage, component inputComponent)

然后我会显示一个带有错误信息的弹出窗口。您可以使用非修饰jdialog作为弹出窗口。您甚至可以使用jpopupmenu作为弹出菜单。
当您显示弹出窗口时,您将定位与输入组件相关的弹出窗口。

yqlxgs2m

yqlxgs2m2#

使用 CardLayout 把你的标签放空 JPanels 必要时交换thm。

fafcakar

fafcakar3#

而不是使用 setVisible() ,给予 errDescriptionLabel 当条目有效时,与封闭面板匹配的背景色。

相关问题