【问题标题】:How do I set JFrame size from different class如何设置不同类的 JFrame 大小
【发布时间】:2016-09-05 14:27:25
【问题描述】:

我有两节课。我的 QuizatMainClass 类和一个名为 window 的类。我正在尝试从具有设定大小的 Quizat 类创建一个窗口,但它不会编译。我已将参数设置为(x 和 y),例如(1080 和 720)。但它不喜欢那样。我是 Java 新手,我真的不明白为什么我不能这样做。 IDE 修复它的方式是使用一些关于超类的东西。如果有人可以解释这对我意味着什么或更简单的方法来做我正在尝试运行的事情,我将不胜感激。请外行的条件。

QuizatMainClass:

package Quizat;

public class QuizatMainClass extends Window{

    public static void main(String[] args) {

    Window QuizatHomeScreen = new Window(1080, 20);

    }

}

窗口类:

package Quizat;

import javax.swing.JFrame;

public class Window{

    public Window(int x, int y){
        JFrame window = new JFrame();
        window.setSize(x,y);
        window.setLocationRelativeTo(null);
        window.setResizable(false);
        window.setVisible(true);
    }

}

【问题讨论】:

  • 如果代码无法编译,请将编译器的错误消息与您的问题一起发布(不在 cmets 中)。
  • 更多详情请查看编辑答案。
  • new Window(1080, 20); 程序员在做这样的事情时通常打算制作一个该大小的内容窗格,设置该大小的窗口将无法实现,因为它不考虑框架装饰。 .

标签: java swing class jframe


【解决方案1】:

您的问题的解释是,由于 QuizatMainClass 扩展了 Window 类,并且 Window 具有特定的参数使用构造函数,因此 QuizatMainClass 将需要创建一个构造函数,该构造函数专门使用参数调用 Window 的超级构造函数,或者给 Window 一个默认无参数构造函数。

话虽如此,您真正的问题是您滥用继承。 QuizatMainClass 不应该扩展 Window 类,就是这样。

【讨论】:

  • 非常感谢您说得对。为什么这会导致问题?
  • @Cutter:当你给一个类一个非默认构造函数,一个有参数的,它失去了它的默认无参数构造函数。如果您从此类继承,您的新子类必须在其自己的构造函数中调用特定的超级构造函数,并传入适当的参数。另一个选择是给父类一个无参数的构造函数。
猜你喜欢
  • 1970-01-01
  • 2021-01-16
  • 1970-01-01
  • 1970-01-01
  • 2015-01-02
  • 1970-01-01
  • 1970-01-01
  • 2022-08-02
  • 2012-01-06
相关资源
最近更新 更多