我想问一下java程序

我想问一下java程序,java,swing,user-interface,Java,Swing,User Interface,我是一名java程序员,我想问一下为什么我的程序不能工作: import javax.swing.JFrame; import javax.swing.JTextArea; import javax.swing.JTextField; public class Cool extends JFrame{ public void AL(){ JFrame frame = new JFrame(); frame.setDefaultCloseOp

我是一名java程序员,我想问一下为什么我的程序不能工作:

import javax.swing.JFrame; 
import javax.swing.JTextArea; 
import javax.swing.JTextField; 

public class Cool extends JFrame{ 

    public void AL(){ 
        JFrame frame = new JFrame(); 
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        frame.setSize(500 , 200); 
        frame.setVisible(true); 
        frame.setTitle("Java"); 

        JTextArea textarea = new JTextArea(); 
        textarea.setEditable(false); 
        textarea.setLineWrap(true); 

        JTextField field = new JTextField(); 
        field.setText("Hi! This is the text!"); 

    } 
} 
这是我的主要课程:

@SuppressWarnings("serial")
public class Main {
    public static void main(String[] args){
        Cool dude = new Cool();
        dude.AL();
    }
}

它不显示任何内容,只显示一个空白的JFrame。它提供了标题,但没有其他内容。您必须将JTextArea和JTextField添加到JFrame中。

我没有看到您将小部件添加到
JFrame
,为什么要显示它们

frame.add(textarea);
frame.add(field);
您没有将或添加到。您可以通过继承自的方法
add
执行此操作。根据Java文档:

将指定的组件追加到此容器的末尾

代码:

frame.add(textarea);
frame.add(field);

您忘记将元素添加到框架中:

frame.add(textarea );
frame.add(field);

添加这些行,您将看到结果。

您必须将文本区域和文本字段添加到AL方法中的
JFrame

    JFrame frame = new JFrame(); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setSize(500 , 200); 
    frame.setVisible(true); 
    frame.setTitle("Java"); 

    JTextArea textarea = new JTextArea(); 
    textarea.setEditable(false); 
    textarea.setLineWrap(true); 

    JTextField field = new JTextField(); 
    field.setText("Hi! This is the text!"); 

    frame.add(textarea);  // <-- here
    frame.add(field);
JFrame=newjframe();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
框架设置尺寸(500200);
frame.setVisible(true);
frame.setTitle(“Java”);
JTextArea textarea=新的JTextArea();
textarea.setEditable(false);
textarea.setLineWrap(true);
JTextField=新的JTextField();
field.setText(“嗨!这是文本!”);

frame.add(textarea);// 我没有使用swing,但似乎必须向JFrame中添加textarea和field

在网上我看到了这个例子:
frame.getContentPane().add(textarea)

我知道有很多答案都是相同的:你应该在你的框架中添加元素。但我还想补充一点,您通常希望将
JTextArea
封装在
JScrollPane
中,这样您就可以编写更多的文本,这些文本将使用滚动条显示

您还应该确保您正在使用布局管理器将元素添加到内容窗格中,以便以您期望的方式排列元素。查看以熟悉可用的布局管理器。另外一个流行的布局管理器是,尽管它需要一个外部Jar文件

下面是一个简单的示例,其中包含我的建议:

import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;

public class Cool extends JFrame {
    private static final long serialVersionUID = 1L;
    private JPanel contentPane;
    private JTextField textField;

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Cool frame = new Cool();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    public Cool() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        contentPane.setLayout(new BorderLayout(0, 0));
        setContentPane(contentPane);

        textField = new JTextField();
        contentPane.add(textField, BorderLayout.NORTH);
        textField.setColumns(30);

        JScrollPane scrollPane = new JScrollPane();
        contentPane.add(scrollPane, BorderLayout.CENTER);

        JTextArea txtrImAText = new JTextArea();
        txtrImAText.setRows(10);
        txtrImAText.setColumns(30);
        scrollPane.setViewportView(txtrImAText);

        pack();
    }
}


您从未将组件添加到主框架中!你可能会发现通读这本书很有帮助