为什么我的Jframe不会出现?

时间:2013-11-07 02:20:01

标签: java swing jframe

我将其设置为可见,执行需要完成的所有操作,例如大小和布局,当我单击运行时它不会显示。谁知道为什么?我查看了过去做过的其他视图类,没有看到任何不同的视图

package model;

import java.awt.*;
import javax.swing.*;
import java.lang.reflect.Method;

@SuppressWarnings("serial")
public class View extends JFrame {
    private static final int FRAME_WIDTH = 1000;
    private static final int FRAME_HEIGHT = 800;
    private static final int FRAME_X_ORIGIN = 250;
    private static final int FRAME_Y_ORIGIN = 250;

    private JButton solveButton;

    private static Controller myController;
    public View(Controller controller)
    {
        myController = controller;
        this.setVisible(true);
        this.setLayout(null);
        this.setSize(FRAME_X_ORIGIN, FRAME_Y_ORIGIN);
        Container contentPane;
        this.setTitle("NQueens");

        this.setResizable(false);
        this.setBackground(Color.WHITE);

        solveButton = new JButton("Solve");
        solveButton.setBounds(500,460,80,80);
        this.add(solveButton);
        this.setVisible(true);
    }
}

2 个答案:

答案 0 :(得分:0)

你在做this.setSize(FRAME_X_ORIGIN, FRAME_Y_ORIGIN);你的意思是this.setSize(FRAME_WIDTH, FRAME_HEIGHT);吗?你得到它的方式,你的“解决”按钮将离开你的框架的边缘。

答案 1 :(得分:0)

您需要调用父构造函数。只需添加

super("My Window Title");

位于构造函数的顶部。而且你有两次调用setVisible(...)方法。删除最重要的一个。它应该像

public View(Controller controller)
{
    super("NQueens");
    myController = controller;

    this.setLayout(null);
    this.setSize(FRAME_X_ORIGIN, FRAME_Y_ORIGIN);
    Container contentPane;

    this.setResizable(false);
    this.setBackground(Color.WHITE);

    solveButton = new JButton("Solve");
    solveButton.setBounds(500,460,80,80);
    this.add(solveButton);
    this.setVisible(true);
}

希望这有帮助。