【问题标题】:how to use mouse click event如何使用鼠标点击事件
【发布时间】:2014-03-15 05:51:18
【问题描述】:

您好,我有一堂课,我正在使用 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);

  }
}

【问题讨论】:

  • 问题是_______????
  • 更具体一点,并正确格式化您的代码:)
  • 问题是当我点击列表时它应该返回索引值并且我的另一个类应该调用它是一个 jframe 窗口
  • 我能够获得索引值,但不知道如何调用我的另一个类
  • 谁能告诉我该怎么做

标签: java swing jlist mouselistener mouseclick-event


【解决方案1】:

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

  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);
      }
   }

单击另一个类按钮并打开窗口

【讨论】:

    【解决方案2】:

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

    当从命令行调用 main() 方法时,它会调用 3 行代码:

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

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

    new MyGui4();
    

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

    当然,我仍然不明白这段代码的意义,因为您的 MyGui4 类中的任何方法都不接受参数。因此,无论您单击 JList 中的哪个项目,您仍将显示具有相同信息的相同 GUI。您需要将选定对象从 JList 传递到您的 GUI。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 2013-09-09
      • 2018-06-29
      • 2014-12-13
      相关资源
      最近更新 更多