如何使用鼠标点击事件

时间:2014-03-15 05:51:18

标签: java swing jlist mouselistener mouseclick-event

嗨我有一个班级,我正在使用mouseclick事件我想从我的鼠标点击时调用另一个班级

     MouseListener mouseListener = new MouseAdapter() {
  public void mouseClicked(MouseEvent mouseEvent) {
    JList theList = (JList) mouseEvent.getSource();
    if (mouseEvent.getClickCount() == 2) {
      int index = theList.locationToIndex(mouseEvent.getPoint());
      if (index >= 0) {
        Object o = theList.getModel().getElementAt(index);
      //  System.out.println("Double-clicked on: " + o.toString());
         String a=o.toString();


                 LiistSelection.setListIndex(a);
                System.out.println(LiistSelection.getListIndex());
                new MyGui4();
      }
    }
  }
};

我想在用户点击列表时调用此类,然后打开新窗口

这是我的班级mygui4.java

public class MyGui4 extends JFrame
{
JLabel jLabel1;


Container pane;

 private static ResultSet resultSet = null;
 public void Gui(  )
  {
      {
getContentPane().setBackground(new java.awt.Color(255,153,51));
} 
 this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
Container c = getContentPane();

      setUndecorated(true);
      Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
      setBounds(0,0,screenSize.width, screenSize.height);
ImageIcon image = new ImageIcon("E:\\SOFTWARE\\TrainPIS\\res\\drawable\\a0.png");
       Border border = LineBorder.createGrayLineBorder();
       jLabel1 = new JLabel(image);
       jLabel1.setBorder(border);
      jLabel1.setBackground(Color.red);
     c.add(jLabel1);
     setLayout(null);
  }

  public static void main( String[] args )
  {
      final MyGui4 frame = new MyGui4();

     frame.Gui();

      frame.setVisible(true);

  }
}

2 个答案:

答案 0 :(得分:0)

您想要创建另一个Class的对象并使用对象调用函数。

  class second 
      { 
       //.....
       public void function()
          {
       //........
          }
       public void function(int index)
         {
       //..........
         }
     }
    second s=new second();
    s.function()//calling function 
    int i=10;
    s.function(i)//calling function with parameter

试试这个例子:

    import javax.swing.*;
    import java.awt.event.*;
    import java.awt.*;
    class m  extends JFrame 
     {
      String s="The Value of List is  10";
      m()
        {
        setVisible(true);
        pack();
        setLayout(null);
        JButton b=new JButton("Click to Open another form");
        b.setBounds(10,10,200,40);
        add(b);
        b.addMouseListener(new MouseAdapter() 
            {
            public void mouseClicked(MouseEvent e)
              {
                  new s(s);//calling another class contructor
              }
              });
           }
          public static void main (String[] args) 
          {
           new m();
          } 
       }

   class s extends JFrame
   {
     s(String s)
     { 
      setVisible(true);
      setSize(100,100);
      setTitle(s);
      }
   }

enter image description here 单击按钮另一个类并打开窗口 enter image description here

答案 1 :(得分:0)

在我看来,当您启动JVM时从命令行调用类MyGui4或在单击JList时从其他应用程序调用MyGui4,如果是这样,那么两个地方的代码需要相同。

从命令行调用时,调用main()方法,然后调用3行代码:

final MyGui4 frame = new MyGui4();
frame.Gui();
frame.setVisible(true);

当您单击JList时调用代码时,您将调用1行代码:

new MyGui4();

你能告诉我有什么区别吗?

当然,我仍然不明白这段代码的重点,因为MyGui4类中没有一个方法接受参数。因此,单击JList中的哪个项目并不重要,您仍将显示具有相同信息的相同GUI。您需要将所选对象从JList传递到GUI。