我将其设置为可见,执行需要完成的所有操作,例如大小和布局,当我单击运行时它不会显示。谁知道为什么?我查看了过去做过的其他视图类,没有看到任何不同的视图
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);
}
}
答案 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);
}
希望这有帮助。