我想问一下java程序
我是一名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
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();
}
}
您从未将组件添加到主框架中!你可能会发现通读这本书很有帮助