本帖最后由 ypchengmsdn 于 2009-07-28 21:20:06 编辑

解决方案 »

  1.   

    很显然你要对行分别操作就不要用jtextarea 要换个别的什么
      

  2.   

    就是说 在jtextarea 中的“456”,“lisi" 如果双击的话,应该弹出与他聊天的对话框 ,请问该怎么实现啊??谢谢大家了?
      

  3.   

    反正用jtextarea的话 我是不知道该怎么一行一行地对鼠标进行监听
      

  4.   

    这个一般是用树形控件来做吧
    如果非要用JTextArea来实现,只有增加个鼠标响应时间。
    然后把好友名字所谓的鼠标位置的范围测试出来
    然后增加鼠标响应
      

  5.   

    component.addMouseListener(
    new MyMouseListener());
    你说的是 这样吗:
    public class MyMouseListener extends MouseAdapter {
    public void mouseClicked(MouseEvent evt) {
    if (evt.getClickCount() == 3) {
    // 处理鼠标三击
    } else if (evt.getClickCount() == 2) {
    // 处理鼠标双击
    }
    }

    但如何才能双击某一个用户呢???
      

  6.   

    我想实现双击jtextarea里的用户,就可以跟对方聊天,该怎么实现呢?希望高手指点??
      

  7.   

    用JLABEL存放好友列表,
    不就可以实现双击了吗?
      

  8.   

    显然你要实现对用户双击,俩点是必须的:1,鼠标位置要能够按行定位 2.要能够识别并获取该行的文本信息。
    你可以查阅Jtextarea类里提供的方法,里面有设置分行方式和获取行位置的方法,或者可以设置滚动条,看能否
    定位到行?如果这样不行,那么可以自己设置一个算法,确定每一行对应的鼠标位置范围来定位该行。然后获得该行的文本信息,通过双击触发产生对应该用户的聊天窗口。由于对Jtextarea不是很熟悉,仅供LZ参考~~
      

  9.   

    用JList来做,而且可以在加一个JScrollPane,可以对list中的每个选项加上  addMouseListener()监听器;
      

  10.   

    我那jtable做的例子import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;import javax.swing.JFrame;
    import javax.swing.JTable;import swing.ShowDialog;public class Mytable { /**
     * @param args
     */
    public static void main(String[] args) { CellEditable mytable = new CellEditable();

    JFrame f = new JFrame("QQ");

    JTable t = new JTable(mytable);
    t.addMouseListener(new MouseListener(){ public void mouseClicked(MouseEvent arg0) {
    // TODO Auto-generated method stub

    } public void mouseEntered(MouseEvent arg0) {
    // TODO Auto-generated method stub

    } public void mouseExited(MouseEvent arg0) {
    // TODO Auto-generated method stub

    } public void mousePressed(MouseEvent arg0) {

    JTable table = (JTable)arg0.getSource();
       
    int row =table.getSelectedRow();
    int column = table.getSelectedColumn();

    String name = table.getValueAt(row,column).toString(); 

    if (arg0.getClickCount()==2) {
    ShowDialog d = new ShowDialog(null,name);
    }
    } public void mouseReleased(MouseEvent arg0) {
    // TODO Auto-generated method stub

    }});


    t.setCellSelectionEnabled(true);
    t.setDragEnabled(true);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.add(t);
    f.setSize(100, 200);
    f.setLocation(200,200);
    f.setVisible(true);

    }}import java.util.Vector;import javax.swing.table.DefaultTableModel;public class CellEditable extends DefaultTableModel { public boolean isCellEditable(int arg0, int arg1) {
    return false;
    } public int getColumnCount() {
    return 1;
    } public int getRowCount() {
    return 5;
    } public Object getValueAt(int row, int column) { Object[] rowData = { "警察", "小偷", "魔怔", "公务员", "商人" }; return rowData[row];
    }}
    import java.awt.Frame;
    import java.awt.HeadlessException;import javax.swing.JDialog;
    import javax.swing.JTextArea;public class ShowDialog extends JDialog { private JTextArea text = null; public ShowDialog(Frame arg0, String arg1) throws HeadlessException {
    super(arg0, arg1);
    text = new JTextArea();
    text.setBounds(40, 40, 130, 60);
    add(text); setLayout(null);
    setLocation(500, 500);
    setSize(200, 200);
    setVisible(true); }}