来自另一个动作的java调用动作

时间:2011-05-16 06:41:15

标签: java swing action

countresultsfrom.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) 
                {
                    Color orginalColor = mcoef.getBackground();
                    switch(countresultsfrom.getSelectedIndex())
                    {
                        case 0: // Mech Cnt;
                            mtotal.setBackground(Color.YELLOW); 

                            if(mstatus.getSelectedIndex() == 2)
                            {
                                countresultsfrom.setSelectedIndex(2);
                                // countresultsfrom <----- CALL EVENT ???
                            }

                            etotal.setBackground(orginalColor);
                            ctotal.setBackground(orginalColor);
                        break;
                        case 1: // El Cnt;
                            etotal.setBackground(Color.YELLOW);

                            if(estatus.getSelectedIndex() == 2)
                            {
                                countresultsfrom.setSelectedIndex(2);
                            }

                            mtotal.setBackground(orginalColor);
                            ctotal.setBackground(orginalColor);
                        break;
                        case 2:
                            ctotal.setBackground(Color.YELLOW);

                            etotal.setBackground(orginalColor);
                            mtotal.setBackground(orginalColor);
                        break;
                    }
                }
            });

如何再次调用侦听器???

4 个答案:

答案 0 :(得分:2)

  1. 您只需致电yourListener.actionPerformed(/*some event*/ e)即可。请注意,它不会作为事件处理,而是作为常规方法调用处理。
  2. #1是简单的技术方法。不推荐。如果你想要一些逻辑,将它包装在一个方法中并调用该方法,ActionListeners就是用来处理GUI事件。

答案 1 :(得分:2)

你的描述对我来说并不清楚,但有两种方式

1 /创建自己的Class someName implements ActionListener

2 /在Action

上创建java.swing.Action一些示例

编辑:

如果您的计数结果是JList,那么我们所有的建议(可能)根本不正确http://download.oracle.com/javase/tutorial/uiswing/components/list.html

答案 2 :(得分:2)

首先,将您的动作执行方法提取到代码中的单独类中。它可以是您希望调用的同一个类中的私有静态类。 e.g

private static class ColorActionHandler implements ActionListener {
   //implement your method here by looping twice. or create a method for your logic and then call it in a for loop in the actionPerformed method
}

并在countresultsfrom按钮的addActionListener中传递此类的实例。

答案 3 :(得分:1)

您希望每次操作都调用两次actionPerformed(ActionEvent e)吗?

如果是,请将以Color orginalColor = mcoef.getBackground()开头的块包装在for循环中。 for (int i=0; i<2; i++) { ... }