哥在JTable的一个cell中加入了JComboBox. 现在如果用户点击这个ComboBox,触发的是ActionEvent对吧?但是我同时还希望获得用户点击的这个Point,但是ActionEvent里面没有getPoint方法,请问我该怎么办?多谢

解决方案 »

  1.   

    JComboBox 一般使用 ItemListener
      

  2.   


    ItemEvent好像也不能getPoint吧?
      

  3.   

    另外,即使再加入MouseListener也不行,因为还是先会处理ActionEvent,而我是希望先获得Point.
      

  4.   

    //看你要做什么。先用MouseEvent获得点的坐标,然后把他放到ActionEvent事件中。或者把ActionEvent中的代码放到MouseEvent事件中,搞定
    package com;
    import javax.swing.*;
    import java.awt.event.*;
    public class Test {
    public static void main(String args[]){
    Circle c1=new Circle();
    }}
    class Circle extends JFrame{
    static int x,y;
    public Circle(){
    init();

    this.setBounds(50,50,700,700);
    this.setVisible(true);
    }

    void init(){
    this.addMouseListener(new Mo()); } }
    class Mo extends MouseAdapter{

    public void mouseClicked(MouseEvent e){
    Circle.x=e.getPoint().x;//这里
    Circle.y=e.getPoint().y;//这里

    }
    }
      

  5.   

    加上你自己的JComboBox的ActionEvent代码就OK了
      

  6.   


    我希望在ComboBox的值(SelectedItem)改变的时候做操作。但是操作中需要用到激活comboBox下拉菜单的那次点击。
    像你说的,如果把ActionEvent的代码加入MouseEvent中,点击确实获得了,但是在ComboBox的值改变时就没反应了。
      

  7.   

    frame的坐标和组件的坐标是两种不同的坐标
    如果一定要,你在项中添加BUTTON试试,但是也是组件的坐标。而且估计要报错,因为添加的选项是obj.不是component.
    没有监听器。
    有一个办法是,点击两下,点击组件的选项后,再点击一次,可以获得刚刚点击的坐标。但不知你做什么用。
    import javax.swing.*;import java.awt.Button;
    import java.awt.FlowLayout;
    import java.awt.Graphics;
    import java.awt.GridLayout;
    import java.awt.Point;
    import java.awt.event.*;
    import java.util.Vector;public class Test {
    public static void main(String args[]) {
    Circle c1 = new Circle();
    }}class Circle extends JFrame { static Vector vector = new Vector();

    static JComboBox com1 = new JComboBox(vector);

    static int x, y; public Circle() {


    this.setLayout(new FlowLayout());
    this.setBounds(50, 50, 700, 700);
    com1.setBorder(BorderFactory.createTitledBorder("the best"));

    vector.addElement("dog");
    vector.addElement("cat");
    vector.addElement("其它");
    //vector.addElement(b);
    itemListener1 lis = new itemListener1();
    com1.addItemListener(lis);

    this.addMouseListener(new Mo());
    com1.addMouseListener(new Mo());
    this.add(com1);
            
    init();
    } void init() {

    this.setVisible(true); }}class Mo extends MouseAdapter{ public void mouseReleased(MouseEvent e) {
     Circle.x=e.getPoint().x;
     Circle.y=e.getPoint().y;
     System.out.println(Circle.x); }
     }class itemListener1 implements ItemListener {
     
    public void itemStateChanged(ItemEvent e) {
              
    if (e.getStateChange() == ItemEvent.SELECTED) {
    JComboBox jcb = (JComboBox) e.getSource();
                
    System.out.println((String) (jcb.getSelectedItem()));
    System.out.println(jcb.getSelectedIndex());

    } else { } }
    }