我的JFrame窗口不会出现

时间:2014-11-17 01:12:46

标签: java swing

我的JFrame窗口似乎不会出现在我一直在观看的教程中,我一直在做所有事情,但没有任何反应。它甚至没有给我一个错误,这使它变得更糟。这是代码:

import javax.swing.*;
import java.awt.*;
public class Window {

    public class Window {

    public void newWindow() {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);

        JLabel label = new JLabel("I am a star!  A beautiful shining star!", SwingConstants.CENTER);
        frame.getContentPane().add(label);


        frame.setVisible(true);
    }
}

(这是第二类,主要是正确链接到这一类)

4 个答案:

答案 0 :(得分:1)

JFrame默认使用名为BorderLayout的layout manager。要查看添加到框架中的组件,您应该参考其javadocs。但是,这里最简单的选择是使用FlowLayout。您还应该使用JFrame的pack()方法,根据Oracle的说法:

  

使此窗口的大小适合其子组件的首选大小和布局。如果任一维度小于上一次调用setMinimumSize方法所指定的最小大小,则会自动放大窗口的最终宽度和高度。

因此,这应该适合你:

import javax.swing.*;
import java.awt.*;
public class Window {

    public void newWindow() {
        JFrame frame = new JFrame();
        frame.getContentPane().setLayout(new FlowLayout()); // specify the layout manager
        frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);

        JLabel label = new JLabel("I am a star!  A beautiful shining star!", SwingConstants.CENTER);
        frame.getContentPane().add(label);

        frame.pack(); // handles sizing of the window
        frame.setVisible(true);
    }
}

请注意,我删除了重复的public class Window声明,这可能是您根本没有看到框架的原因。如果它仍然不适合您,我认为您没有调用newWindow()方法。如果您希望只需拨打new Window();即可显示该窗口,则应将public void newWindow()更改为public Window()

答案 1 :(得分:0)

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

public class Window {
public void newWindow() {
    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JLabel label = new JLabel("I am a star!  A beautiful shining star!", SwingConstants.CENTER);
    frame.getContentPane().add(label);
    frame.setVisible(true);
    frame.pack();
  }
}

答案 2 :(得分:0)

当您创建应用程序时,它应该在主方法中有String []args

一旦完成,您的代码应该看起来像这样!

import javax.swing.JFrame;

public class myCode() {
    JFrame myFrame;
    public static void main(String []args) {
        myFrame.setTitle("myApp");
        myFrame.setSize(800, 600);
        myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        myFrame.setVisible(true)
        //your done!
    }

答案 3 :(得分:-2)

从我看到的,你没有设置JFrame的大小。试试,

frame.setSize(500, 500);