2014-09-24 61 views
0

我有16 JTextarea放置在我的面板上(在gridlayout中)。我没有为此使用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)。

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

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

这怎么可能(只有很小的变化)?

+0

你看过[addMouseListener](http://docs.oracle.com/javase/7/docs/api/java/awt/Component.html#addMouseListener ( java.awt.event.MouseListener )) ? – 2014-09-24 19:10:13

回答

0

添加的MouseListener到的JTextArea在maakVak

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

private MouseListener textAreaMouseListener() { 

    return new MouseListener() { 

     @Override 
     public void mouseClicked(MouseEvent e) { 
      JTextArea vak = (JTextArea) e.getComponent(); 
      //display popup to make changes 
     } 

     @Override 
     public void mousePressed(MouseEvent e) {} 

     @Override 
     public void mouseReleased(MouseEvent e) {} 

     @Override 
     public void mouseEntered(MouseEvent e) {} 

     @Override 
     public void mouseExited(MouseEvent e) {} 
    }; 
} 
+0

谢谢,试过这个,它工作正常! – 2014-09-25 20:53:18

1

JTextArea是一个java.awt.Component中,所以它有访问addMouseListener将方法。

textArea.addMouseListener(new MouseListener(MouseEvent e) { 

    //implemented methods go here 
}); 

这将创建一个实现MouseListener的匿名内部类,我发现它是做到这一点的最简单方法。

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

如果将放置在JTextAreas中的字符串不是很长,我会建议使用JButtons,所以您可以使用addActionListener方法,而不必重写其他四种不会使用的方法。