Java 如何在不可编辑的JTextField中显示图像?
在我的Java Swing应用程序中,我希望在不可编辑的JTextField中放置一个锁图像,如下所示: 我已经创建了一个JTextField,并在其上方插入了一个JLabel,并为JLabel定义了锁图标。如果JTextField是可编辑的,则JLabel显示良好,如上图所示,但如果JTextField是不可编辑的,则图像根本不显示Java 如何在不可编辑的JTextField中显示图像?,java,swing,jlabel,jtextfield,Java,Swing,Jlabel,Jtextfield,在我的Java Swing应用程序中,我希望在不可编辑的JTextField中放置一个锁图像,如下所示: 我已经创建了一个JTextField,并在其上方插入了一个JLabel,并为JLabel定义了锁图标。如果JTextField是可编辑的,则JLabel显示良好,如上图所示,但如果JTextField是不可编辑的,则图像根本不显示 如何解决这个问题?编写自己的类,扩展JTextField,在这个类中,您必须覆盖paintComponent(Graphics g) 1) 小心地调整图标的位置
如何解决这个问题?编写自己的类,扩展
JTextField
,在这个类中,您必须覆盖paintComponent(Graphics g)
1) 小心地调整图标的位置
因为
2) 将您的自定义JTextField
放入resizibale容器
,如果图标
保持在右侧,如果使用图标
内部调整自定义JTextField
的大小正确
3) 使用
图标为设置可编辑(true)
和设置可编辑(false)
创建构造函数。您可以尝试在面板中添加标签(图标)和文本字段。从文本字段中删除边框,并在面板周围添加公共边框。将背景设置为与文本字段的背景相同。为什么不使用jTextPane
try {
// Get the text pane's document
JTextPane textPane = new JTextPane();
StyledDocument doc = (StyledDocument)textPane.getDocument();
// The image must first be wrapped in a style
Style style = doc.addStyle("StyleName", null);
StyleConstants.setIcon(style, new ImageIcon("imagefile"));
// Insert the image at the end of the text
doc.insertString(doc.getLength(), "ignored text", style);
} catch (BadLocationException e) {
}
创建一个自定义的边框
让我们称之为IconBorder。查看MatteIcon的源代码,然后将其自定义为仅绘制单个图像。然后将边框添加到文本字段,代码如下:
Border border = new CompoundBorder(textField.getBorder(), new IconBorder(...));
textField.setBorder( border );
您正在使用Java7吗?然后使用。要更快地获得更好的帮助,请发布一个。在代码中生成一个小图像。感谢大家提供的好的解决方案。这对我来说是最简单的。最后一个部件看起来非常漂亮。谢谢斯坦尼斯拉夫。