当前位置: 代码迷 >> J2SE >> 急问GUI中jtextarea 中的鼠标事件(。)
  详细解决方案

急问GUI中jtextarea 中的鼠标事件(。)

热度:334   发布时间:2016-04-24 12:38:56.0
急问GUI中jtextarea 中的鼠标事件(在线等。。。)
我仿照QQ做了一个聊天系统,是用GUI做的,但是做到登陆后出现自己的登陆界面时,我怎么将jtextarea里面的好友双击后,就弹出一个与他聊天的对话框呢,jtextarea 里的一行记录是一个好友,就是用鼠标双击的话(仿照QQ),弹出与他聊天的对话框。


注:(好友是放在数据库中的)


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

由于对Jtextarea不是很熟悉,仅供LZ参考~~
------解决方案--------------------
我那jtable做的例子
Java code
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);    }}