2

此代码在运行时将创建一个窗口,但不在指定的尺寸上。它有什么问题?

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);
    }
}
4

3 回答 3

5

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

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

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

于 2010-01-14T20:01:05.837 回答
3

看起来您在这里有许多“机会领域”。

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

  • 其次,您调用setVisibletextField 是因为您也没有看到。

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

这里的问题是您必须在构造结束时调用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);

    }
}
于 2010-01-14T20:28:46.997 回答
1

尝试setPreferredSize(Dimension)改用。

于 2010-01-14T20:02:16.473 回答