【问题标题】:Java Swing: Display validation rule to user on JPanelJava Swing:在 JPanel 上向用户显示验证规则
【发布时间】:2020-12-06 01:59:19
【问题描述】:

我有一个 JPanel,其中包含许多长度限制为几个字符的 JTextField(由自定义 PlainDocument 实现)。

我想在面板的左上角显示一个红色字体的文本,上面写着“**字段最多允许 20 个字符!”。

到目前为止,我正在考虑的两个选项是添加 TitledBorder 或 JLabel。最好的方法是什么?

谢谢。

【问题讨论】:

  • 由自定义 PlainDocument 实现)。 - 不要使用 PlainDocument。那是一种古老的方法。对于 Swing,您应该使用 DocumentFilter。阅读 Implementing a DocumentFilter 上的 Swing 教程中的部分,以获得完全符合您要求的工作示例。我也不知道你为什么需要。我在使用网络时填写的表格上看不到这一点。当您达到最大值时,DocumentFilter 会发出“哔”声。但在这两种选择中,我会使用 JLabel。
  • 谢谢。我提议弹出一个警告对话框,其中包含一条明确的消息,说明字符数有限制。哔哔声被认为令人困惑。那么,您是否建议我使用 DocumentFilter 而不是 PlainDocument 来实现文本字段的固定长度验证规则?
  • 最好的方法是满足您的需求并完成您想要的工作。您“可能”通过多种方式实现这一目标,for example 采用不同的方法。

标签: java swing jpanel jlabel jtextfield


【解决方案1】:

您可以在 TextField 中再添加一个 JLabel,以便在需要时设置 Visible。

JTextField t = new JTextField();
    t.setBounds(0, 0, 200, 75);
    frame.add(t);

    JLabel l = new JLabel();
    l.setText("only 20 Character");
    l.setForeground(Color.red);
    l.setBounds(0, 0, 100, 25);
    t.add(l);

我会这样做的。

【讨论】:

  • 你为什么使用'setBounds'。您的建议很合理,但 setBounds 的使用令人怀疑。
  • 是的,我可能也可以使用 setSize,因为 Position 是 (0,0)。但是如果你也想设置 x 和 y,你可以这样做。 setBounds 只是将 x, y 和 height 合二为一。如果这是你的问题。
  • 你为什么要设置?
  • 因为如果我不设置组件的大小,默认为 0px * 0px,您无法看到或使用组件。如果你不给它们一个尺寸,你就看不到它们。这是你的问题吗
  • 大多数组件并非如此,通常您让布局管理器处理大小。
猜你喜欢
  • 1970-01-01
  • 2014-05-15
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 2014-08-15
  • 2021-06-13
  • 1970-01-01
相关资源
最近更新 更多