你能做一个可编辑的标签吗?

Can you make an editable label?

小问题,你能做一个看起来像 JLabel 但仍然可以编辑的文本字段吗?您仍然可以更改其大小和字体,但背景 + 边框应该消失。截至目前,我正在尝试使用 Swing 来做到这一点。 您仍然会看到闪烁的小光标,它会一直等到您按下某个焦点后才停止。

除此之外,这只会让用户感到困惑,您可以使用一个简单的

textField.setBackground(null);
textField.setBorder(null);

您可以尝试使用无边框且背景颜色与框架相同的 JTextField

JFrame frame = new JFrame();

frame.setLayout(new FlowLayout());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300,300);

JTextField textField = new JTextField("some text");
textField.setBorder(BorderFactory.createEmptyBorder());
textField.setBackground(frame.getBackground());

frame.getContentPane().add(textField);

frame.setVisible(true);

是的,你可以做到:D 一切皆有可能。所以我能想到的方法(虽然我还没有尝试过)是通过用背景修补文本字段的背景并将边框设置为空,或者通过创建自定义 JtextField 实现并覆盖这些方法,或者通过努力来实现方式并覆盖 Jlabel class 以添加更改文本的功能,但这比其他两种推荐方式更难。

无法创建可编辑的标签因为它存在。您可以使用没有边框且背景与 JFrame 相同的 jTextField。


话虽如此,您 可以 添加一个 KeyListener 到您的 JLabel 并根据按下的键更新标签的文本。类似地,您可以使用 | 和一个单独的线程来实现插入符号,使其闪烁。但正如 Andrew Thompson 非常正确地说的那样,"Anything is possible, much less is sensible".

干杯。