java - 如何创建可点击的文本容器

标签 java swing

我在面板上放置了 16 个 JTextarea(在网格布局中)。我没有为此使用设计工具 netbeans。该代码为我生成它们:

  for (int i = 0; i < 16; i++) {
            JTextArea vak = maakVak(gridLayoutPanel); //make new JTextArea and add them to gridlayout.
            tekstvakken.add(vak); //save Jtextarea to ArrayList. 
        }

这是生成新的 JTextArea 并将其添加到 GUI 的方法。

 public JTextArea maakVak(JPanel p) {
    JTextArea vak = new JTextArea(80, 120);    
    vak.setEditable(false);     
    p.add(vak);
    return vak; //return JTextarea to save in the ArrayList
}

我有一个ArrayList,其中包含我为该软件制作的类中的对象。对象包含多个字符串。我需要将所有字符串从一个对象“打印”到一个 JTextArea,并且我对 ArrayList 中的前 16 个对象执行此操作(因此我只有 16 JTextArea)。

这工作正常,我的 GUI 上有 16 个 JTextArea,它们包含正确的字符串。

现在我想向我的软件添加更多功能,并且我需要以某种方式使这些 JTextArea 可点击(当此事件发生时,应该弹出一个屏幕,我可以在其中更改/删除对象)。

这怎么可能(只需稍加改动)?

最佳答案

JTextArea 是一个 java.awt.Component,因此它可以访问 addMouseListener 方法。

textArea.addMouseListener(new MouseListener(MouseEvent e) {

    //implemented methods go here
});

这将创建一个实现 MouseListener 的匿名内部类,我发现这是执行此操作的最简单方法。

否则,您可以让您的类实现 MouseListener。这完成了同样的事情,因为您仍然需要重写方法,但它会影响整个类,而不是只使用一次的匿名类。

如果要放置在 JTextArea 中的字符串不是很长,我建议改用 JButton,这样您就可以使用 addActionListener 方法,而不必重写其他四个您不会使用的方法。

关于java - 如何创建可点击的文本容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26024134/

相关文章:

java - 刷新JTree而不崩溃

java - 静止物体与运动物体的碰撞

java - 无法绘制多个实例

Java线程不执行

java - 在 Java 中屏蔽字符串的最佳方法是什么?

java - "local variables are thread safe"有条件吗?

java - 如何从另一个线程更改处理中的背景和变量

java - Java 初始化 block 上的操作顺序是什么?

java - 项目缺少所需的库 : 'forms-1.3.0.jar' and 'miglayout15-swing.jar'

java从同一个UI启动多个swingworker