Java JFrame的尺寸不正确

Java JFrame的尺寸不正确,java,swing,jframe,Java,Swing,Jframe,此代码在运行时将生成一个窗口,但不在指定的维度上。怎么了 import javax.swing.*; import java.awt.*; public class Windowing { void JFrame(){ JFrame frames = new JFrame("Total recall"); frames.setSize(1000,8000); frames.setVisible(true); frames.

此代码在运行时将生成一个窗口,但不在指定的维度上。怎么了

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

public class Windowing {
    void JFrame(){
        JFrame frames = new JFrame("Total recall");
        frames.setSize(1000,8000);
        frames.setVisible(true);
        frames.pack();
        //Buttons push = new Buttons();
        //((Buttons) push).buttons();
        JTextField wager = new JTextField(1);
        wager.setSize(100,200);
        wager.setVisible(true);
        wager.setLocation(100, 200);
        frames.add(wager);
        //frames.add(push);
    }
}

您可以删除对
frames.pack()的调用;它将覆盖以前设置的帧大小

但是,您真正想要做的是删除
frames.setSize(10008000)
并将
frames.pack()
移动到方法的底部;这将确保框架足够大以显示其内容,但不会太大而无法在屏幕上显示


如果在向框架添加任何内容之前调用
pack
(就像您现在所做的那样),将使窗口非常小;它可能会出现在屏幕的左上角,但除非你知道去哪里看,否则你不会注意到它

尝试使用
setPreferredSize(Dimension)

这里似乎有许多“机会领域”

  • 首先,似乎您将帧大小设置为1000x8000,因为您没有看到任何更改,对吗

  • 其次,在文本字段上调用
    setVisible
    ,因为您也没有看到

  • 最后,您要设置文本字段的大小(我猜是因为您看到它占用了整个帧)

这里的问题是,您必须在构造结束时调用
pack
setVisible
。此外,您还必须学习如何使用布局管理器和框架

挥杆,非常有力,但刚开始时有点难把握

这两个链接将很有帮助:

我更改了您的代码,结果如下所示:

这是修改后的源代码

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

public class Windowing {
    public static void main( String [] args ) {
        Windowing windowing = new Windowing();
        windowing.showFrame();
    }
    void showFrame(){
        JFrame frame = new JFrame("Total recall");
        JButton push = new JButton("Push");
        JTextField wager = new JTextField(15);

        // Panels do have "FlowLayout"
        JPanel panel = new JPanel();
        panel.add(wager);
        panel.add(push);

        frame.add( panel );
        frame.pack();
        frame.setVisible(true);

    }
}

他能在
pack()
调用之后将
setSize()
调用移动到吗?当然可以,但这会使框架太大,无法在屏幕上显示。使用这两种方法设置帧的大小是毫无意义的。