我知道它之前已经发布过,但我无法取得任何结果,所以我寻求帮助。
我正在尝试将我的 JFrame
类调用到将设置通信端口的主类。该框架是使用 Netbeans 软件中的设计创建的。
我的问题是为什么我的主 Java 文件无法打开在另一个类中创建的框架?
以下是缩短的代码:
主类是SerialTest
package javaapplication1;
import javaapplication1.RCDA_JFrame;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import gnu.io.CommPortIdentifier;
import gnu.io.SerialPort;
import gnu.io.SerialPortEvent;
import gnu.io.SerialPortEventListener;
import java.util.Enumeration;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JFrame;
public class SerialTest extends JFrame implements SerialPortEventListener {
public static void main(String[] args) throws Exception {
JFrame RCDA_JFrame = new JFrame();
RCDA_JFrame.setVisible(true);
}
}
我的 GUI 类是 RCDA_JFrame
package javaapplication1;
import java.io.IOException;
//import java.io.OutputStream;
import javaapplication1.SerialTest;
public class RCDA_JFrame extends javax.swing.JFrame {
//private OutputStream SerialOut;
public RCDA_JFrame() {
initComponents();
}
public static void main(String args[]) {
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new RCDA_JFrame().setVisible(true);
}
});
}
}
最佳答案
首先,只有一个类(GUI 类)应该扩展 JFrame。然而,这并不是造成问题的原因。其次,即使两个类都扩展了 JFrame(这通常意味着应该实例化一个类),这两个类都不会被实例化。第三,整个应用程序中应该只有一个 main
方法。第四,不完全确定 GUI 类中的 main()
方法正在做什么——为什么它创建一个 RCDA_JFrame (我认为 Serial 类应该这样做,基于标题问题) ,为什么它在一个单独的线程中执行此操作?最后,确保您正在设置 JFrame 的大小(尽管您可能已经在 initComponents
方法中执行此操作。)
下面是一些基本代码,可让您从另一个类创建和访问自定义 JFrame:
开始上课(这是主课)
public class Start{
private static CustomJFrame myFrame;
public static void main(String[] args){
myFrame = new CustomJFrame();
//you can edit myFrame's properties here.
}
}
CustomJFrame 类(JFrame 类)
import javax.swing.JFrame;
public class CustomJFrame extends JFrame{
public CustomJFrame(){
//set its size in px.
setSize(200,200);
//center it on screen.
setLocationRelativeTo(null);
//give it a title.
setTitle("My JFrame");
//set the close operation.
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//make it visible.
setVisible(true);
}
}
经过测试,工作正常。
关于java - 如何从另一个 Java 类调用 JFrame [Netbeans],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33727974/