我在面板上放置了 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/