在chekbox上的活动

时间:2015-06-01 06:48:23

标签: java swing checkbox

我正在swing开发一个Java接口编码,我使用了一个复选框。 我希望当我点击复选框时,它会产生一个连续的事件(因为在这种情况下我做了一个纬线并将它发送到微控制器)但我不知道该怎么做。 我尝试制作一个ActionListener但它只做了一次动作。

谁可以帮助我? :)

这是我尝试过的代码:

checkbox.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {

                    // ------------------------------------------------------------|
                    // Déclaration des variables de la trame de la liaison
                    // montante|
                    // -----------------------------------------------------------|
                    float capGPS = -30;
                    float longi = 30;
                    float lat = 50;
                    float h = 50;
                    float capM = 50;
                    float V = 50;
                    float R = 50;
                    float Tsurvol = 50;
                    float Dist = 45;
                    float phiE = -30;
                    float thetaE = 30;
                    float psiE = 45;
                    float psiScan = 30;
                    float TfCam = 0;

                    String strRealFR = thetafld.getText();

                    float thetaCam = Float.valueOf(strRealFR);

                    float psiCam = Float.valueOf(psifld.getText());
                    byte[] length = new byte[1];
                    length[0] = 7;
                    byte[] typeMission = new byte[1];
                    typeMission[0] = 1;
                    // -----------------------------------------------------|
                    // Initialisation du tableau d'octets contenant la
                    // trame|
                    // ----------------------------------------------------|
                    byte[] trame = new byte[0];
                    trame = Tools.concatenateByteArrays(trame,
                            "$".getBytes());// StarFlag
                    trame = Tools.concatenateByteArrays(trame,
                            "!".getBytes());// Flag Nav
                    trame = Tools.concatenateByteArrays(trame,
                            "M".getBytes());// Mémorisation
                    trame = Tools.concatenateByteArrays(trame,
                            Tools.convertSingleToBytes(capGPS));// CapGPS
                    trame = Tools.concatenateByteArrays(trame,
                            Tools.convertSingleToBytes(longi));// Longitude
                    trame = Tools.concatenateByteArrays(trame,
                            Tools.convertSingleToBytes(lat));// Latitude
                    trame = Tools.concatenateByteArrays(trame,
                            Tools.convertSingleToBytes(h));// Altitude
                    trame = Tools.concatenateByteArrays(trame,
                            Tools.convertSingleToBytes(capM));// Cap
                                                                // Magnétque
                    trame = Tools.concatenateByteArrays(trame,
                            Tools.convertSingleToBytes(V));// Vitesse
                    trame = Tools.concatenateByteArrays(trame,
                            Tools.convertSingleToBytes(R));// Rayon de
                                                            // révolution
                    trame = Tools.concatenateByteArrays(trame,
                            Tools.convertSingleToBytes(Tsurvol));// Temps de
                                                                    // survol
                    trame = Tools.concatenateByteArrays(trame,
                            Tools.convertSingleToBytes(Dist));// Distance
                    trame = Tools.concatenateByteArrays(trame,
                            "Rt".getBytes());// Retour au point initial
                    trame = Tools.concatenateByteArrays(trame,
                            "§".getBytes());// flag attitude
                    trame = Tools.concatenateByteArrays(trame,
                            Tools.convertSingleToBytes(phiE));// Angle de
                                                                // roulis
                    trame = Tools.concatenateByteArrays(trame, typeMission);// Type
                                                                            // de
                                                                            // mission
                    trame = Tools.concatenateByteArrays(trame,
                            Tools.convertSingleToBytes(thetaE));// Angle de
                                                                // tangage
                    trame = Tools.concatenateByteArrays(trame,
                            Tools.convertSingleToBytes(psiE));// Angle de
                                                                // lacet
                    trame = Tools.concatenateByteArrays(trame,
                            "#".getBytes());// mode de fonctionnement
                    trame = Tools.concatenateByteArrays(trame,
                            "o".getBytes());// Marche/Arret
                    trame = Tools.concatenateByteArrays(trame,
                            Tools.convertSingleToBytes(-thetaCam));// Tangage
                                                                    // caméra
                    trame = Tools.concatenateByteArrays(trame,
                            Tools.convertSingleToBytes(psiCam));// Angle de
                                                                // lacet
                                                                // caméra
                    trame = Tools.concatenateByteArrays(trame,
                            Tools.convertSingleToBytes(psiScan));// vitesse
                                                                    // de
                                                                    // balayage
                                                                    // caméra
                    trame = Tools.concatenateByteArrays(trame,
                            Tools.convertSingleToBytes(TfCam));// tems de
                                                                // fonctionnement
                                                                // de la
                                                                // caméra
                    trame = Tools.concatenateByteArrays(trame,
                            "*".getBytes());// fin de trame

                    try {
                        if (port != null) {
                            fluxEcriture.write(trame);

                        }
                    } catch (IOException ex) {
                        System.err.println(ex.getMessage());
                    }

                } // fin actionPerformed

            }); 

(抱歉我的英语不好,我是法国学生......:/)

2 个答案:

答案 0 :(得分:0)

我建议您使用timers并重复检查checkbox

时要执行的代码
 Timer timer = new Timer(1000, new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    //do your stuff here
                }
            });
            timer.start();

答案 1 :(得分:0)

你不应该在EDT上做那么多非gui相关的工作。

创建新的java.util.Timer并在Timer#scheduleAtFixedRate方法中调用actionPerformed不要使用javax.swing.Timer ,因为它在EDT上执行,而您似乎正在处理actionPerformed方法中的许多与非gui相关的事情。相反,使用EventQueue.invokeLater发布与EDT相关的东西

您需要传递scheduleAtFixedRate方法TimerTask(包含您想要重复执行的代码),延迟金额(等待时间befire启动任务)和期间金额(延迟时间)每次执行之间):

java.util.Timer timer = new java.util.Timer();

ActionListener listener = new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        timer.scheduleAtFixedRate(new TimerTask() {
            public void run() {
                //code to execute repeatedly
            }
        }, 0, 0);
};