0

デバイスから入力を取得し、ファイルをエクスポートするときに入力に応じてjpanel番号を表示するプログラムを作成しましたが、何も表示されません。ここで起動しなくても、サンプルコードがあります。

主要:

public class main1 {

static CommPortIdentifier portId;
static Enumeration portList;

 public static void main(String[] args) {


        portList=CommPortIdentifier.getPortIdentifiers();


        while (portList.hasMoreElements()){
            portId=(CommPortIdentifier) portList.nextElement();

            if (portId.getPortType()==CommPortIdentifier.PORT_SERIAL){

                if (portId.getName().equalsIgnoreCase("COM4")){
                    sensor sensor1= new sensor(portId,portList);
                    try {
                          Thread.sleep(3000);
                        }
                        catch (Exception e) {}

                     JFrame myframe = new JFrame ("mouse controller");

                    myframe.setVisible(true);
                    myframe.setSize(400, 400);
                    MouseControlPanel mymousecontroller = new MouseControlPanel(sensor1);
                    myframe.add(mymousecontroller);

                }

            }

        }




    }
}

ウィンドウの内容-

public class MouseControlPanel extends JPanel  {
/**
 * 
 */
private static final long serialVersionUID = 1L;

int i=0;

sensor sensor1;
String value;
public MouseControlPanel (sensor sensor1){
    this.sensor1=sensor1;
    value=sensor1.getvalue()+"";
}

public void paintComponent (Graphics g){
    super.paintComponent(g);
    g.setFont(new Font("ariel",Font.ITALIC,50));
    g.drawString(sensor1.getvalue()+"", 100, 100);
    try {
          Thread.sleep(10);
        }
        catch (Exception e) {}
    repaint();
}



}
4

2 に答える 2

0

もう 1 つ追加する必要があるのは、コードのデバッグに何時間も費やすまで、空の catch ステートメントがどれほど危険であるかを理解することはできないということです。少なくとも e.printStackTrace() を含めます。おそらくエラー メッセージが表示されますが、表示されません。

于 2012-07-04T18:38:17.143 に答える
0

コードは 1 つのクラスに組み合わせることができmainますMouseControlPanel。次に、次の問題が発生します。

  1. インポートステートメントの欠落
  2. 存在しないクラスsensor参照
  3. JDK とは別にダウンロードする必要があるシリアル ポート アクティビティを検出するためのライブラリであるJavaCommのクラスに依存しています

あなたのコードをコンパイルすることはできませんが、上記が解決されれば次のように動作すると思います:

import java.awt.Font;
import java.awt.Graphics;
import java.util.Enumeration;
// CommPortIdentifier is part of JavaComm 
// see http://reprap.org/wiki/JavaComm for a description of what and how
import javax.comm.CommPortIdentifier;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class MouseControlPanel extends JPanel {
    sensor sensor1; // what class is this?

    String value;

    public MouseControlPanel(sensor sensor1) {
        this.sensor1 = sensor1;
        this.value = sensor1.getvalue() + "";
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.setFont(new Font("ariel", Font.ITALIC, 50));
        g.drawString(sensor1.getvalue() + "", 100, 100);
        Thread.sleep(10);
        repaint();
    }

    public static void main(String[] args) {
        CommPortIdentifier portId;
        Enumeration portList;

        portList = CommPortIdentifier.getPortIdentifiers();

        while (portList.hasMoreElements()) {
            portId = (CommPortIdentifier) portList.nextElement();

            // rewrote conditional as guard clause
            if (portId.getPortType() != CommPortIdentifier.PORT_SERIAL || !portId.getName().equalsIgnoreCase("COM4")) {
                continue;
            }

            sensor sensor1 = new sensor(portId, portList);
            Thread.sleep(3000);

            MouseControlPanel mymousecontroller = new MouseControlPanel(sensor1);
            JFrame myframe = new JFrame("mouse controller");
            myframe.setVisible(true);
            myframe.setSize(400, 400);
            myframe.add(mymousecontroller);
        }
    }
}
于 2012-07-04T13:25:39.670 に答える