【问题标题】:How to add a "Add a text" in a JFrame如何在 JFrame 中添加“添加文本”
【发布时间】:2019-10-10 05:00:26
【问题描述】:

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

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

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

【问题讨论】:

标签: java swing text


【解决方案1】:

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

然后了解MouseListeners,它将帮助您识别用户何时何地点击您的JFrame

然后了解KeyListeners,它可以让您检测用户何时输入。您可能希望改用 key bind,但如上所述,您的 UI 相对简单,只有一个可聚焦组件,因此按键侦听器可能没问题。

这个通用策略应该可以帮助您在问题上取得飞跃:

  1. 使用鼠标监听器检测鼠标点击

  2. 绘制插入栏

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

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

  5. 重绘插入栏

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-18
    • 1970-01-01
    • 2015-02-19
    • 2013-06-01
    • 2018-09-09
    • 1970-01-01
    • 2013-08-22
    相关资源
    最近更新 更多