我有一个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占位符的解决方案。”“空白”不是理想的解决方案,因为对话框看起来不平衡。
3条答案
按热度按时间93ze6v8z1#
我有一个javaswing对话框,每个输入组件上面都有一个隐藏的jlabel
我不会为此使用隐藏组件。我会改变:
到
然后我会显示一个带有错误信息的弹出窗口。您可以使用非修饰jdialog作为弹出窗口。您甚至可以使用jpopupmenu作为弹出菜单。
当您显示弹出窗口时,您将定位与输入组件相关的弹出窗口。
yqlxgs2m2#
使用
CardLayout
把你的标签放空JPanels
必要时交换thm。fafcakar3#
而不是使用
setVisible()
,给予errDescriptionLabel
当条目有效时,与封闭面板匹配的背景色。