我想问一下java程序

时间:2014-06-10 08:41:46

标签: 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.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。它确实给出了标题,但没有任何东西它拥有一切。

7 个答案:

答案 0 :(得分:1)

您必须将JTextArea和JTextField添加到JFrame。

答案 1 :(得分:1)

我没有看到您将小部件添加到JFrame,那么它们为什么会出现?

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

答案 2 :(得分:1)

您没有将JTextAreaJTextField添加到JFrame。您可以通过继承自Container的方法add来完成此操作。根据Java Docs:

  

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

<强>代码:

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

答案 3 :(得分:1)

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

您还应该确保使用布局管理器将元素添加到内容窗格中,以便元素按照您期望的方式排列。请查看A Visual Guide to Layout Managers以熟悉可用的布局管理器。另一个流行的布局管理器是MigLayout,虽然它需要一个外部Jar文件。

以下是我的建议的一个简单示例:

An application with a text field and area

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();
    }
}

答案 4 :(得分:0)

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

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

添加此行,您将看到结果。

答案 5 :(得分:0)

您必须将文本区域和文本字段添加到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);

答案 6 :(得分:0)

我没有使用swing,但似乎你必须在你的JFrame框架中添加textarea和field。

在网上看,我看到了这个例子: frame.getContentPane()添加(textarea的);