编程新手——Java窗口不显示
下面是我的代码,这个java应用程序将创建一个带有3个按钮的窗口:编程新手——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
- 关
- 2.5V
- 5.0V
现在,我已经修复了错误,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);
}
你的主要方法没有任何作用