【问题标题】:How to add an editable text box in JPanel如何在 JPanel 中添加可编辑的文本框
【发布时间】:2014-10-27 14:59:30
【问题描述】:

我希望在我的 JPanel 上添加一个文本框。此文本框类似于 Microsoft PowerPoint 中的内容:您可以调整大小、四处移动等。我查看了JTextField,但我认为这不是我需要的。我确实不需要这样的弹出框:

我有一个允许用户添加、调整大小和移动形状的程序。我现在希望能够在这些形状中放置一个文本框。这是我正在寻找的示例:

无论如何我可以做到这一点吗?谢谢。

【问题讨论】:

  • 要么通过 KeyListener 手动处理键盘输入,要么只使用 JTextArea 或其他文本组件。
  • A JTextArea 接近我所需要的。但我需要它没有边框并且只显示文本。这可能吗?
  • 当然。查看 API 以了解有用的方法,例如设置边框的方法。
  • 酷,非常感谢,我一定会去看看

标签: java swing text


【解决方案1】:

ComponentResizer 类负责调整大小。这是一个可调整大小的 JTextArea 的工作示例:

public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        @Override
        public void run() {
            buildGUI();
        }
    });
}

private static void buildGUI() {
    JFrame f = new JFrame("Test");
    f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

    ComponentResizer cr = new ComponentResizer();
    JPanel mainPanel = new JPanel(null);
    f.add(mainPanel);

    JTextArea textArea = new JTextArea("Some text\nSome other text");
    cr.registerComponent(textArea);

    mainPanel.add(textArea);
    textArea.setBounds(50, 50, 150, 150);

    f.setSize(400, 400);
    f.setLocationRelativeTo(null);
    f.setVisible(true);
}

如果你还想移动JTextArea,可以另外使用ComponentMover并添加如下代码:

    ComponentMover cm = new ComponentMover();
    cm.registerComponent(textArea);
    cm.setDragInsets( cr.getDragInsets() );

【讨论】:

  • 感谢您的帖子! ComponentResizer 需要什么导入?
  • 您需要从我发布的链接中获取 ComponentResizer java 类,并将其放入您的项目中
  • 呃!抱歉,错过了:)
猜你喜欢
  • 1970-01-01
  • 2020-07-24
  • 2017-04-19
  • 2014-11-02
  • 1970-01-01
  • 2013-02-26
  • 2014-03-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多