java 代码在不调整框架大小的情况下不显示结果

java code not showing results without resizing frame

我正在尝试改造 phone 键盘,但是如果不调整结果 window 的大小我就看不到结果,这是我不想要的。

这是我的代码: 在我输入显示区域的代码之前,代码会 运行 就好了。但在那之后,我必须不断调整它的大小(我不想这样做)我尝试调整显示区域本身的大小。

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

public class mobilePhone{

    private JFrame keypadFrame;
    private JPanel panels1;
    private JTextArea displayArea;

    private JButton b1;
    private JButton b2;
    private JButton b3;
    private JButton b4;
    private JButton b5;
    private JButton b6;
    private JButton b7;
    private JButton b8;
    private JButton b9;
    private JButton b10;
    private JButton b11;
    private JButton b12;
    private JButton b13;
    private JButton b14;
    private JButton b15;

    public mobilePhone(){
        Interface();
    }
    public void Interface(){

        keypadFrame = new JFrame("Mobile Calculator");
        keypadFrame.setVisible(true);
        keypadFrame.setSize(270, 300);
        keypadFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        keypadFrame.setResizable(false);

        displayArea = new JTextArea(2,5);
        displayArea.setBackground(Color.WHITE);
        Border DABorder = BorderFactory.createLineBorder(Color.RED,4);
        displayArea.setBorder(DABorder);
        Font DAFont = new Font("ariel",Font.BOLD,30);
        displayArea.setFont(DAFont);
        displayArea.setLineWrap(true);

        panels1 = new JPanel(new GridLayout(5,1));
        panels1.setBackground(Color.DARK_GRAY);
        Border panelBorder = BorderFactory.createLineBorder(Color.BLUE,5);
        panels1.setBorder(panelBorder); 

        b1 = new JButton("7");
        b2 = new JButton("8");
        b3 = new JButton("9");
        b4 = new JButton("4");
        b5 = new JButton("5");
        b6 = new JButton("6");
        b7 = new JButton("1");
        b8 = new JButton("2");
        b9 = new JButton("3");
        b10 = new JButton("*");
        b11 = new JButton("0");
        b12 = new JButton("#");
        b13 = new JButton("CLEAR");

        panels1.add(b1);
        panels1.add(b2);
        panels1.add(b3);
        panels1.add(b4);
        panels1.add(b5);
        panels1.add(b6);
        panels1.add(b7);
        panels1.add(b8);
        panels1.add(b9);
        panels1.add(b10);
        panels1.add(b11);
        panels1.add(b12);

        keypadFrame.add(panels1,BorderLayout.CENTER);
        keypadFrame.add(displayArea, BorderLayout.NORTH);
        keypadFrame.add(b13, BorderLayout.EAST);
    }

    public static void main(String[] args){

        new mobilePhone();

    }
}

keypadFrame.setVisible(true);放在你的Interface方法的末尾(然后看看Code Conventions for the Java TM Programming Language,它会让人们更容易阅读你的代码并供你阅读其他人)

或者,在框架的 contentPane

上调用 revalidaterepaint