0

我试图通过添加以下内容来制作一个独立的小程序:

            public static void main(String[] args) {
    JFrame frame = new JFrame("StartingPoint");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    StartingPoint sp = new StartingPoint();
    frame.getContentPane().add(sp);
    sp.init();
    frame.pack();
    frame.setVisible(true);
    sp.start();
    }

就在我的公开课之后。当作为小程序运行时,它什么也不做,但是当作为应用程序运行时,除了标题之外,它作为一个非常小的、几乎是扁平的盒子运行,当手动调整大小时,除了背景颜色之外,屏幕是空白的。知道是什么原因造成的吗?

我还注意到,每次调整框架大小时,框架上的内容都会冻结,就好像应该发生什么的屏幕截图一样,当屏幕大小调整到几乎全屏时,我可以在屏幕顶部看到一条条子应该移动的东西。

4

2 回答 2

1

我只想说,将小程序放入框架中是一个非常糟糕的主意。您最好将应用程序内容写入一个单独的容器(例如JPanel)并将其添加到您的小程序或框架中 - 恕我直言。

从 Java 文档...

窗口#pack

使此 Window 调整大小以适合其子组件的首选大小和布局。如果任一尺寸小于先前调用 setMinimumSize 方法指定的最小尺寸,则生成的窗口宽度和高度会自动放大。

如果窗口和/或其所有者还不能显示,则在计算首选大小之前,它们都可以显示。在计算窗口大小后验证窗口。

这表明您的小程序需要提供一个preferredSize如果您想使用pack

于 2012-11-14T00:03:20.193 回答
0

您需要设置的大小JFrame

frame.setSize(500, 400);

听起来好像您正在覆盖该paint()方法。如果是这样,您将需要致电

super.paint(g);

在调整大小时重新绘制小程序容器的所有子组件。

于 2012-11-13T22:29:06.743 回答