JAVA表单检测更改 [英] JAVA form detect change

查看:122
本文介绍了JAVA表单检测更改的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想分别处理事件,在模型视图控制器设计patteren的contexter。
所以,假设我有一个类扩展JFrame。

I want to handle events separately, in the contexte of Model view controller design patteren. So, let's suppose that i have a class extends JFrame.

import java.awt.EventQueue;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.HeadlessException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JSpinner;
import javax.swing.SpinnerNumberModel;


public class Example2 extends JFrame{
  private JSpinner spinner1;
  private JSpinner spinner2;
  private JSpinner spinner3;
  private JSpinner spinner4;

  private JLabel  lbl1;
  private JLabel  lbl2;
  private JLabel  lbl3;
  private JLabel  lbl4;

  private JButton button;

    public Example2() {
        setLayout(new GridBagLayout());
        initComponents();
        buildFrame();
        pack();
    }



private void initComponents(){
   lbl1 = new JLabel("Number 1:");
    lbl2 = new JLabel("Number 2:");
     lbl3 = new JLabel("Number 3:"); 
     lbl4 = new JLabel("Number 4:");

     button = new JButton("O.K");
     spinner1 = new JSpinner(new SpinnerNumberModel(0,Integer.MIN_VALUE, Integer.MAX_VALUE, 1));
     spinner2 = new JSpinner(new SpinnerNumberModel(0,Integer.MIN_VALUE, Integer.MAX_VALUE, 1));
     spinner3 = new JSpinner(new SpinnerNumberModel(0,Integer.MIN_VALUE, Integer.MAX_VALUE, 1)); 
     spinner4 = new JSpinner(new SpinnerNumberModel(0,Integer.MIN_VALUE, Integer.MAX_VALUE, 1));

     button = new JButton("O.K");

}

private void buildFrame(){
    GridBagConstraints gc = new GridBagConstraints(); 
    gc.gridx = 0;
    // First row
    gc.gridy = 0 ;
    getContentPane().add(lbl1,gc);
    // Next row
    gc.gridy++ ;
    getContentPane().add(lbl2,gc);
    // Next row
    gc.gridy++ ;
    getContentPane().add(lbl3,gc);

    // Next row
    gc.gridy++ ;
    getContentPane().add(lbl4,gc);

    gc.gridy = 0;
    gc.gridx = 1;

    getContentPane().add(spinner1,gc);

    // Next row
    gc.gridy++ ; 
     getContentPane().add(spinner2,gc);
     // Next row
    gc.gridy++ ; 
     getContentPane().add(spinner3,gc);

     // Next row
    gc.gridy++ ; 
     getContentPane().add(spinner4,gc);


    // Next row 
     gc.gridy++;
     gc.gridx = 0 ; 

    getContentPane().add(button,gc);


}

public static void main(String[] args){
    EventQueue.invokeLater(new Runnable() {

        @Override
        public void run() {
            new Example2().setVisible(true);
         }
    });
}



}



Is there any way for separate event processing. Sort of making a class witch handles event in Example2 class.Some thing like that.

public class Example2EventsManager {
}

而不是在Example2类中处理事件:

instead of handling events inside Example2 class:

button.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent ae) {
            System.out.println("processing");
         }
    });
..........
spinner1.addChangeListener(new ChangeListener() {

    @Override
    public void stateChanged(ChangeEvent ce) {
      }
});
etc.


推荐答案

创建一个实现ActionListener接口

Create a class that implements the ActionListener interface

public class MyActionListener implements ActionListener
{
    @Override
    public void actionPerformed(ActionEvent e)
    {
         System.out.println(...);
    }
}

然后使用类:

button.addActionListener( new MyActionListener() );

如果你想要实现多个接口

If you want you can implement multiple interfaces

public class MyListener implements ActionListener, ChangeListener
...

这篇关于JAVA表单检测更改的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆