【问题标题】:setBorder on JTextField does not work ? or does it?JTextField 上的 setBorder 不起作用?或者是吗?
【发布时间】:2011-01-17 21:37:37
【问题描述】:

代码是这样的:

JTextField txt = new JTextField();
txt.setBorder(BorderFactory.createMatteBorder(2,2,2,2,Color.red));

但是文本字段忽略了我对setBorder 的调用。 没有任何变化。

我将用JLabel 替换它(例如)

JLabel txt = new JLabel();
txt.setBorder(BorderFactory.createMatteBorder(2,2,2,2,Color.red));

我会看到红色边框。

谁能告诉我为什么?或者更好地向我解释如何在JTextField 中添加边框?

【问题讨论】:

  • 那“应该”工作。您使用的是 JTextField 还是扩展 JTextField 的自定义类?你还对 JTextField 做了什么?你是在别处设置边界吗?
  • 需要两秒钟的时间来证明它是否存在。诚实的。要么你相信我的话,要么写一个小测试,然后自己看看。无论如何,其他信息是: uimanager 设置在 Windows UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");而且我不在扩展 JTextField 的类上工作。我正在使用 JTextField 本身。
  • "证明" 行为将取决于 PL&F、PL&F 版本、平台、平台版本以及可能的配置。没那么容易证明。如果您包含一个应该可编译的示例,那么尝试起来会更容易。
  • 稍微注意格式化问题会有所帮助。特别是如果您建议人们自己编写测试程序。
  • 我对其进行了测试,它使用“com.sun.java.swing.plaf.windows.WindowsLookAndFeel”工作! (Windows XP、Java 1.6.0_16)

标签: java swing jtextfield


【解决方案1】:

查看this explanation/recommendation from the Java API

一般来说,当你想设置一个 标准 Swing 组件上的边框 除了 JPanel 或 JLabel,我们 建议你把组件 在 JPanel 中并在 JPanel。

所以...您应该将 JTextField 嵌套在 JPanel 或 JLabel 中,并将边框放在 JPanel 或 JLabel 上。瞧!

【讨论】:

  • 嘿。我想更改一行 API 文档比修复一堆代码来使用 BorderUIResource 更容易。
猜你喜欢
  • 2015-02-21
  • 2013-11-03
  • 2016-08-30
  • 1970-01-01
  • 2012-09-24
  • 1970-01-01
  • 2013-12-17
  • 2021-12-27
相关资源
最近更新 更多