繁体   English   中英

Java Swing-JLabel.setVisible(...)上的“调整大小”对话框

[英]Java Swing - resize Dialog on JLabel.setVisible(…)

我有一个Java Swing对话框,在每个输入组件(即JTextField)上方都有一个隐藏的 JLabel。 这个隐藏的JLabel的目的是将其用作其输入组件的验证输出。

假设有一个用于描述某些实体的输入字段,该字段必须为非空,并且应包含一些特殊内容。 出错时,该操作可以调用以下方法:

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

之后,我调用pack()invalidate()

问题在于,JDialog的垂直大小仍然相同,因此某些组件(对话框底部的按钮)消失了(因为它们不在视野中)。

您对如何解决有什么建议?

最好的祝福。

编辑:我忘了提到,JDialog具有“自由设计”布局(默认为Netbeans GUI Builder)。 编辑2:我正在寻找一种不需要(错误)JLabel占位符的解决方案。 “空空间”不是理想的解决方案,因为对话框看起来不平衡。

使用CardLayout将您labesl和空JPanels ANS交换时THM必要的。

当输入有效时,不使用setVisible()而是给errDescriptionLabel提供与封闭面板匹配的背景色。

我在每个输入组件上方都有一个带有隐藏JLabel的Java Swing对话框

我不会为此使用隐藏的组件。 我会改变:

private void invalidateDescription(String errMessage)

private void invalidateDescription(String errMessage, component inputComponent)

然后,我将显示带有错误消息的弹出窗口。 您可以使用未装饰的JDialog作为弹出窗口。 您甚至可以使用JPopupMenu作为弹出窗口。

当显示弹出窗口时,您将相对于输入组件放置弹出窗口。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM