Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
编程新手——Java窗口不显示_Java - Fatal编程技术网

编程新手——Java窗口不显示

编程新手——Java窗口不显示,java,Java,下面是我的代码,这个java应用程序将创建一个带有3个按钮的窗口: 关 2.5V 5.0V 这些按钮用于与我的Arduino Uno通信现在,我已经修复了错误,NetBeans上没有显示任何错误。但是,带按钮的窗口没有显示出来,有人能检查我的代码吗?谢谢 package javaapplication1; import gnu.io.CommPort; import gnu.io.CommPortIdentifier; import gnu.io.SerialPort; import gn

下面是我的代码,这个java应用程序将创建一个带有3个按钮的窗口:

  • 2.5V
  • 5.0V
这些按钮用于与我的Arduino Uno通信
现在,我已经修复了错误,NetBeans上没有显示任何错误。
但是,带按钮的窗口没有显示出来,有人能检查我的代码吗?
谢谢

package javaapplication1;

import gnu.io.CommPort;
import gnu.io.CommPortIdentifier;
import gnu.io.SerialPort;
import gnu.io.SerialPortEvent;
import gnu.io.SerialPortEventListener;
//import java.awt.BorderLayout;
//import java.awt.event.ActionEvent;
//import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.JButton;
import javax.swing.JFrame;
//import javax.swing.JOptionPane;
//import javax.swing.JPanel;

public class GUItest extends JFrame implements SerialPortEventListener, WindowListener, MouseListener {
    public static void main(String[] argv){
}
    private JFrame  mainWindow;
    //private JPanel  mainPanel;
    private JButton degrees0OFF;
    private JButton degrees0HALF;
    private JButton degrees0ON;

    SerialPort serialPort;
    private InputStream serialIn;
    private OutputStream serialOut;
    private BufferedReader serialReader;

    public GUItest() {
        super("RCDA Senior Design"); //Title of the window
        //setLayout(new FlowLayout());
        mainWindow = new JFrame();
        mainWindow.setSize(600, 600);
        mainWindow.setVisible(true);

        degrees0OFF = new JButton("OFF"); //name of the button
        degrees0HALF = new JButton("2.5V"); //name of the button
        degrees0ON = new JButton("5.0V"); //name of the button

        mainWindow.add(degrees0OFF);
        mainWindow.add(degrees0HALF);
        mainWindow.add(degrees0ON);
        degrees0OFF.addMouseListener(this);
        degrees0HALF.addMouseListener(this);
        degrees0ON.addMouseListener(this);
    }

    public void begin() throws Exception{
        //this.setVisible(true);

    // Open port
    CommPortIdentifier port = CommPortIdentifier.getPortIdentifier("COM8"); 
        CommPort commPort = port.open(this.getClass().getName(),2000);
        serialPort = (SerialPort) commPort;
        serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
    serialIn=serialPort.getInputStream();
    serialOut=serialPort.getOutputStream();
    serialReader = new BufferedReader( new InputStreamReader(serialIn) );
        //serialPort.addEventListener(this);
        serialPort.notifyOnDataAvailable(true);
    }

    public void serialEvent(SerialPortEvent e) {
        Log.debug("serialEvent: "+e.toString());
        try {
                    String line = serialReader.readLine();
                    Log.debug("READ from serial: "+line);

        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

        @Override public void windowOpened(WindowEvent e)       {}
    @Override public void windowClosed(WindowEvent e)       {}
    @Override public void windowIconified(WindowEvent e)    {}
    @Override public void windowDeiconified(WindowEvent e)  {}
    @Override public void windowActivated(WindowEvent e)    {}
    @Override public void windowDeactivated(WindowEvent e)  {}
    @Override public void windowClosing(WindowEvent e)      {
        Log.debug("windowClosing: "+e);
        if(e.getComponent()==this){
            Log.debug("Closing port");
            System.exit(1);
        }
    }
        @Override       public void mouseClicked(MouseEvent e)  {}
    @Override   public void mousePressed(MouseEvent e)  {}
    @Override   public void mouseEntered(MouseEvent e)  {}
    @Override   public void mouseExited(MouseEvent e)   {}
    @Override   public void mouseReleased(MouseEvent e) {
        Log.debug("mouseReleased: "+e);

        if(e.getComponent() == degrees0OFF){  //degrees0OFF
            Log.debug("OFF button released");
            try {
                serialOut.write("B1".getBytes());
            } catch (IOException e1) {
                e1.printStackTrace();
            }
        }
        if(e.getComponent() == degrees0HALF){  //degrees0HALF
            Log.debug("2.5V button released");
            try {
                serialOut.write("B2".getBytes());
            } catch (IOException e1) {
                e1.printStackTrace();
            }           
        }
                if(e.getComponent() == degrees0ON){  //degrees0ON
            Log.debug("5.0V button released");
            try {
                serialOut.write("B3".getBytes());
            } catch (IOException e1) {
                e1.printStackTrace();
            }           
        }
        }
}

由于您的
GUITest
类已经扩展了
JFrame
,因此您不必在其内部创建新对象

我建议您在课堂上编辑
main
方法,只使用以下说明:

public static void main(String[] args){
    GUITest myFrame = new GUITest();
}
在代码中,使用
this
关键字引用对象



另外,
setVisible(boolean)
通常用于所有指令的末尾,以确保在您的
可见之前,所有操作都已完成

您的主方法不执行任何操作,因此不会发生任何事情

您需要实例化并显示JFrame

public static void main(String[] args) {
    GUITest window = new GUITest();
    window.setVisible(true);
}

你的主要方法没有任何作用