2017-02-27 40 views
0

我想JTextField中使用的borderlayout在面板上的中心出现,但它没有出现,按钮出现,但JTextField中不..JTextField是没有出现

import java.awt.*; 
import javax.swing.*; 
public class cal { 

    public static void main(String[] args) { 
     JFrame frame= new JFrame(); 
     frame.setVisible(true); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(400, 300); 
     frame.setLayout(new FlowLayout()); 
     JPanel panel= new JPanel(); 
     panel.setLayout(new BorderLayout()); 
     JTextField answer= new JTextField("0"); 
     panel.add(answer, BorderLayout.CENTER); 
     frame.add(panel); 
    } 

} 
+4

调用'frame.setVisible(true);'只有所有组件都被添加了。 – Berger

+3

什么按钮?您在此处没有按钮...您还应该“包装”框架 –

回答

0

必须调用调用setVisible(真)添加组件后在您的框架上。

import java.awt.BorderLayout; 
import java.awt.FlowLayout; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 
public class cal { 

    public static void main(final String[] args) { 
     JFrame frame = new JFrame(); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(400, 300); 
     frame.getContentPane().setLayout(new FlowLayout()); 
     JPanel panel = new JPanel(); 
     panel.setLayout(new BorderLayout()); 
     JTextField answer = new JTextField("0"); 
     panel.add(answer, BorderLayout.CENTER); 
     frame.getContentPane().add(panel); 
     frame.pack(); 
     frame.setVisible(true); 
    } 

} 
+5

解释更改内容以及进行更改的原因。比较代码并不能帮助您理解您为什么进行这些更改。 – camickr

+1

尽管此代码片段可能会解决问题,但[包括解释](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)确实有助于提高帖子的质量。请记住,您将来会为读者回答问题,而这些人可能不知道您的代码建议的原因。 – DimaSan

+0

你说得对。谢谢。 –