问题 更改AWT TextField的边框颜色


在AWT应用程序中,我需要设置TextField的边框颜色。

在JTextField中,我知道我们可以做到以下几点

JTextField tf = new JTextField();
tf.setBorder(BorderFactory.createLineBorder(Color.decode("#2C6791")));

但是在awt TextField中无法使用setBorder()方法。这个问题有解决方法吗?


1516
2017-09-28 11:05


起源



答案:


AWT TextField 正如您所发现的那样,不支持边框。您可以通过将文本字段放在a中来模拟边框 Panel 这只是略大于文本字段并更改面板的背景颜色。


8
2017-09-28 11:26



谢谢,但TextFields在文本框的内侧略微有默认的灰色阴影边框..我想我不能摆脱它? - tiger
+1我打算建议压倒一切 paint(),但这看起来更容易。 - trashgod


答案:


AWT TextField 正如您所发现的那样,不支持边框。您可以通过将文本字段放在a中来模拟边框 Panel 这只是略大于文本字段并更改面板的背景颜色。


8
2017-09-28 11:26



谢谢,但TextFields在文本框的内侧略微有默认的灰色阴影边框..我想我不能摆脱它? - tiger
+1我打算建议压倒一切 paint(),但这看起来更容易。 - trashgod


为了兼容外观和感觉变化, setBorder() API建议如下:“通常,当您要在标准Swing组件上设置边框时,除了 JPanel 要么 JLabel,我们建议您将组件放入 JPanel 并设置边框 JPanel“。

附录:虽然这表明了一种方法,但它与纯AWT应用程序无关。


2
2017-09-28 14:10



AWT TextField不继承自 JComponent。 - Barend
啊,我误读了;你的类比方法看起来很可行。 - trashgod