在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中将文本字段添加到图形的主要内容,如果未能解决你的问题,请参考以下文章
在 Swift 中将文本字段添加到 UILocalNotification