java - 如何从另一个 Java 类调用 JFrame [Netbeans]

标签 java swing netbeans jframe

我知道它之前已经发布过,但我无法取得任何结果,所以我寻求帮助。

我正在尝试将我的 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/

相关文章:

java - 在运行时从数组列表中添加和删除用户并保留项目详细信息

java - 试图用 Arrays.contains Java 比较两个数组

java - 如何将 Java Swing 中的键盘输入映射到另一个字符或字符串?

netbeans - 如何让 NetBeans 12.0 在 Mac 上启动(MAC OS 11.0 beta/Big Sur)

java - 并发 - 中断 Future 而不取消它

Eclipse 中的 C# SLN 文件方法 (Java)

java - 将值传递给 JLabel

java - 如何让 Jlist 在添加新元素后自动向下滚动

java - 登录对话框不显示欢迎

user-interface - Netbeans 6.8 上的功能测试