在java中将文本字段添加到图形

Posted

技术标签:

【中文标题】在java中将文本字段添加到图形【英文标题】:Adding textfield to Graphics in java 【发布时间】:2013-05-15 10:00:48 【问题描述】:

有人知道如何将JTextField 添加到图形名称bufferstrategy.getDrawGraphics 中吗? 试着把它画成图形,像这样:

private JTextField Input = new JTextField();
BufferStrategy bs = getBufferStrategy();

if (bs == null) 
    createBufferStrategy(3);
    return;


final Graphics gCommands = bs.getDrawGraphics();
Graphics gCC = bs.getDrawGraphics();
Input.requestFocus();
Input.paint(gCC);
Input.setBounds(800,250, 350,20);
Input.setBorder(BorderFactory.createLineBorder(Color.BLACK, 0));
Input.setEditable(true);
Input.setBackground(getBackground());
Input.setForeground(getForeground());
Input.addKeyListener(key);

但是,即使它显示了,我也无法对其进行编辑。即使Input.setBounds(800,250, 350,20) 也不起作用。上面写的这个方法,在游戏循环中被调用。谁能帮帮我?

【问题讨论】:

出了什么问题?您是否收到运行时错误?显示了吗? 它显示了,虽然 JTextField 不可编辑 这个类是 Canvas 吗? JFrame? 它扩展了 Canvas,是的 Canvas 是一个 AWT 组件。您是否尝试过使用 java.awt.TextField?或者,您可以尝试使用 JTextField 绘制到 JPanel 而不是 Canvas 吗?无论哪种方式,我认为您应该将文本字段添加到支持组件而不是图形。 【参考方案1】:

Graphics 上绘制组件不会使其成为“活动”组件。组件需要添加到有效容器中,该容器连接到本地对等方,然后才能生效。

目前,您唯一要做的就是在图形上下文的表面上生成组件的“橡皮图章”/图像。

这有一些技巧,因为绘制过程期望组件附加到有效的本地对等点。

首先,你必须准备好场地……

Input.setBounds(800,250, 350,20);
Input.setBorder(BorderFactory.createLineBorder(Color.BLACK, 0));
Input.setEditable(true);
Input.setBackground(getBackground());
Input.setForeground(getForeground());

然后你需要画它。该字段不会自动重新绘制,这与该字段未附加到本机对等点有关...

Input.printAll(gCC);

如果你想要一个生命组件,你将不得不将组件添加到容器中。这在使用缓冲策略时可能会出现问题...

Swing 组件已经被双缓冲了。

【讨论】:

以上是关于在java中将文本字段添加到图形的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中将文本添加到图形中

在 Swift 中将文本字段添加到 UILocalNotification

Android:从运行时生成的文本字段中将数据保存到Firebase

如何在java中将文本添加到文本文件中? [复制]

如何在java中将文本添加到图像中?

在 django 中将 css 类添加到验证错误的字段