Java - Jframe 不显示按钮标签或文本字段

Java - Jframe not displaying Buttons Labels or textfields

我是 java 的新手,但是当我尝试创建一个新框架时,我得到的只是一个新的 window 打开按钮或文本的白色背景和 none添加框或标签。我不知道我做错了什么?

private static void MainGui(){

    MainInterfaces MainGui = new MainInterfaces();

    MainGui.setTitle(name+ "'s Inbox");
    MainGui.setSize(600,600);
    MainGui.setVisible(true);
    MainGui.setDefaultCloseOperation(EXIT_ON_CLOSE);
}

主界面Class

class MainInterfaces extends JFrame implements ActionListener
{

    private JButton send;
    private JTextField to, subject, message;
    private JLabel toLbl, subjectLbl, messageLbl;


    public MainInterfaces() { 

        setLayout(new FlowLayout());
        toLbl = new JLabel("Recipient: ");
        subjectLbl = new JLabel("Subject: ");
        messageLbl = new JLabel("Message: ");

        to = new JTextField(32);
        subject = new JTextField(32);
        message = new JTextField(32);

        send = new JButton("SEND");

        add(toLbl);
        add(to);
        add(subjectLbl);
        add(subject);
        add(messageLbl);
        add(message);
        add(send);

    }

    public void actionPerformed(ActionEvent e)
    {
        // TODO Auto-generated method stub

    }
}

您的代码无法编译,因为您有很多错误(您没有主要方法private static void MainGui(){ 没有任何意义等)。试试这个代码,它编译并打开 GUI 对我来说很好,显示你想要的一切(按钮、标签等):

1) Class MainGui.java

class MainGui{
    public static void main(String[] args) {

        MainInterfaces MainGui = new MainInterfaces();

        MainGui.setTitle("'s Inbox");
        MainGui.setSize(600,600);
        MainGui.setVisible(true);
        MainGui.setDefaultCloseOperation(MainGui.EXIT_ON_CLOSE);
    }
}

2) Class MainInterfaces.java

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class MainInterfaces extends JFrame implements ActionListener
{

    private JButton send;
    private JTextField to, subject, message;
    private JLabel toLbl, subjectLbl, messageLbl;


    public MainInterfaces() { 



        setLayout(new FlowLayout());
        toLbl = new JLabel("Recipient: ");
        subjectLbl = new JLabel("Subject: ");
        messageLbl = new JLabel("Message: ");

        to = new JTextField(32);
        subject = new JTextField(32);
        message = new JTextField(32);

        send = new JButton("SEND");

        add(toLbl);
        add(to);
        add(subjectLbl);
        add(subject);
        add(messageLbl);
        add(message);
        add(send);




    }

    public void actionPerformed(ActionEvent e)
    {
        // TODO Auto-generated method stub

    }
}

我用一行代码修复了它。只需将 "setVisible(true)" 方法切换到 MainInterface class 内部即可。但是,请确保将它作为构造函数中的最后一行代码,否则将无法运行。基本上,发生的事情是当框架本身被设置为 true 时,组件是在之后添加的,因此没有被显示。将 "setVisible(true)" 放在最后可确保在显示框架时添加所有组件。

附带说明一下,您可以在 MainInterface 中添加您在 MainGUI class 中键入的所有方法。

这是 MainGUI:

public class MainGUI 
    {

        public static void main(String[] args) 
        {
           new MainInterfaces();
        }

    }

MainInterfaces 的外观如下:

public class MainInterfaces extends JFrame implements ActionListener
{
    private JButton send; 
    private JTextField to, subject, message; 
    private JLabel toLbl, subjectLbl, messageLbl; 
    public MainInterfaces() 
    { 
        setTitle("(Name)'s Inbox");
        setSize(600,600);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setLayout(new FlowLayout()); 
        toLbl = new JLabel("Recipient: "); 
        subjectLbl = new JLabel("Subject: "); 
        messageLbl = new JLabel("Message: "); 
        to = new JTextField(32); 
        subject = new JTextField(32); 
        message = new JTextField(32); 
        send = new JButton("SEND"); 
        add(toLbl); add(to); 
        add(subjectLbl); 
        add(subject); 
        add(messageLbl); 
        add(message); 
        add(send); 
        setVisible(true);
    } 
    public void actionPerformed(ActionEvent e) 
    { 

    }

}