文本字段不显示

问题描述:

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
public class GUI extends JFrame 
{ 
    //Setting out the variables 
    JTextField answerResponse; 
    JButton one,two,three,four,five,six,seven,eight,nine,zero,add,subtract,multiply,divide,equals; 
    String var1, var2, tanswer; 
    Double answer; 
    JPanel contentpanel; 
    public GUI() 
    { 
     //JFrame Window 
     JFrame frame = new JFrame(); 
     frame.setSize(250, 400); 
     frame.setDefaultCloseOperation(EXIT_ON_CLOSE); 
     frame.setResizable(false); 
     frame.setVisible(true); 
     frame.setTitle("Calculator"); 
     frame.setLocationRelativeTo(null); 

     //Buttons 
     one = new JButton("1"); two = new JButton("2"); three = new JButton("3"); 
     four = new JButton("4"); five = new JButton("5"); six = new JButton("6"); 
     seven = new JButton("7"); eight = new JButton("8"); nine = new JButton("9"); 
     zero = new JButton("0"); add = new JButton("+"); divide = new JButton("/"); 
     multiply = new JButton("*"); subtract = new JButton("-"); equals = new JButton("="); 

     //Dimensions 
     Dimension dim = new Dimension(75, 25); 
     one.setPreferredSize(dim); two.setPreferredSize(dim); three.setPreferredSize(dim); 
     four.setPreferredSize(dim); five.setPreferredSize(dim); six.setPreferredSize(dim); 
     seven.setPreferredSize(dim); eight.setPreferredSize(dim); nine.setPreferredSize(dim); 
     zero.setPreferredSize(new Dimension(225, 25)); add.setPreferredSize(new Dimension(113, 25)); subtract.setPreferredSize(new Dimension(113, 25)); 
     multiply.setPreferredSize(new Dimension(113, 25)); divide.setPreferredSize(new Dimension(113, 25)); equals.setPreferredSize(new Dimension(225, 25)); 

     //Content Panel 
     JPanel contentPanel = new JPanel(); 
     frame.setContentPane(contentPanel); 
     contentPanel.setLayout(new FlowLayout()); 

     //Adding to content panel 
     contentPanel.add(one); contentPanel.add(two); contentPanel.add(three); 
     contentPanel.add(four); contentPanel.add(five); contentPanel.add(six); 
     contentPanel.add(seven); contentPanel.add(eight); contentPanel.add(nine); 
     contentPanel.add(zero); contentPanel.add(add); contentPanel.add(subtract); 
     contentPanel.add(multiply); contentPanel.add(divide); contentPanel.add(equals); 

     //Declaring Variable Values 
     answerResponse = new JTextField(null, 20); 
     answerResponse.setEditable(false); 
     contentPanel.add(answerResponse); 
    } 
} 

我在尝试制作计算器时遇到问题。名为“answerResponse”的文本字段未显示。其余的按钮等,文本字段应该是第一个在顶部。文本字段不显示

+0

将jframe工作人员放在最后 – mussdroid 2014-09-02 08:03:10

采取frame.setVisible(true);,并将其置于contentPanel.add(answerResponse);为上。

虽然没有证据并非如此,请确保您在事件指派线程的上下文中执行你的UI代码,请参阅Initial Threads更多细节

也看看Should I avoid the use of set(Preferred|Maximum|Minimum)Size methods in Java Swing?

你应该也可以使用不使用窗口的setSize,而使用pack来代替,因为这将考虑到平台和窗口边界之间发生的各种外观和感觉的区别