如何在JFrame中添加“添加文本”

时间:2019-10-10 05:00:26

标签: java swing text

我很难获得可以帮助我解决问题的资源。我想添加一个按钮,使我可以在JFrame中的任意位置插入文本,以便单击并添加文本

在此之前,我一直在使用JTextFieldJTextArea,但是它们在预定义的空间中很有用(我相信)。

我想要的就像是Paint中的经典“添加文本”按钮(“ A”按钮)一样,当您单击它时,您将拥有文本光标(如“ I”),然后在框架中的某个位置单击,我实际上可以在该区域添加文本。我称之为“动态添加文本”。不幸的是,我没有任何代码可以显示,因为我不确定如何从头开始构建代码,或者不确定如何在Swing中使用方法,但是我很想更好地解释一下,如果这对你们来说太通用了。

1 个答案:

答案 0 :(得分:1)

您将需要熟悉Java图形和相关方法,尤其是drawString(),因此,请先阅读正式的Graphics Tutorial

然后了解MouseListeners,这将帮助您识别用户单击JFrame的时间和地点。

然后了解KeyListeners,这将使您能够检测用户何时输入。您可能希望改用key bind,但如上所述,您的UI相对简单,只有一个可聚焦的组件,因此按键监听程序可能还可以。

此一般策略应该可以帮助您快速解决问题:

  1. 使用mouselistener检测鼠标单击

  2. 绘制插入栏

  3. 使用按键侦听器检测按键

  4. 使用graphics.drawstring绘制按键指定的字符

  5. 重新绘制插入栏

确保您的键侦听器处理Enter键,以便您知道何时擦除插入栏。您将在每个步骤之间paint进入JFrame。

至少可以说,结果将是粗略的,并且您会注意到,在事情看起来很专业之前,您必须处理很多问题。例如,您必须处理font metrics。并非每个字符都具有相同的宽度,因此您必须根据用户键入的任何字符drawString()计算charWidth的X参数。出于这个原因,您最好从等宽字体开始。