Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java';s主类之外的2d图形_Java_Swing_Graphics_2d_Awt - Fatal编程技术网

使用Java';s主类之外的2d图形

使用Java';s主类之外的2d图形,java,swing,graphics,2d,awt,Java,Swing,Graphics,2d,Awt,我有一个名为survival的类,它包含一个初始化程序的主方法。我怎样才能把它转移到一个与生存无关的新类中呢 下面是Survival.java: package survival; import javax.swing.*; public class Survival extends JFrame { private static int applicationWidth = 1024; private static int applicationHeight = 768;

我有一个名为survival的类,它包含一个初始化程序的主方法。我怎样才能把它转移到一个与生存无关的新类中呢

下面是Survival.java:

package survival;
import javax.swing.*;

public class Survival extends JFrame { 
    private static int applicationWidth = 1024;
    private static int applicationHeight = 768;

    public Survival() {
        setTitle("Survival");
        setResizable(false);
        setSize(applicationWidth, applicationHeight);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        new Survival();
    }
}
下面是GraphicsDisplay.java:

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

public class GraphicsDisplay extends JPanel {
   @Override public void paintComponent(Graphics g) {
       g.fillOval(50, 50, 100, 100);
   }
}

您必须扩展JPanel(JComponent)并重写
paintComponent(Graphics g)
方法

比如说,

public class MyPanel extends JPanel
{ 
   @Override
   public void paintComponent(Graphics g) {
       super.paintComponent(g); // suggestion of @kleopatra
   }
}

您必须扩展JPanel(JComponent)并重写
paintComponent(Graphics g)
方法

比如说,

public class MyPanel extends JPanel
{ 
   @Override
   public void paintComponent(Graphics g) {
       super.paintComponent(g); // suggestion of @kleopatra
   }
}

似乎您可以在
Survival
构造函数中添加
GraphicsDisplay
的实例

...
setResizable(false);
add(new GraphicsDisplay());
setSize(applicationWidth, applicationHeight);
...
在本例中,
GraphicsDisplay
充当隐式循环模型的视图。您可以看看这是如何在模式中分隔类的


因为<代码> GraphicsDisplay 是完全由您的程序呈现的自定义组件,请考虑重写<代码> GETApple Resisie()/Cuth>以定义面板的几何结构。然后,封闭框架可以只使用

pack()
,而不知道游戏中使用的其他显示面板。这是一个示例。

似乎您可以在
生存
构造函数中添加
GraphicsDisplay
的实例

...
setResizable(false);
add(new GraphicsDisplay());
setSize(applicationWidth, applicationHeight);
...
在本例中,
GraphicsDisplay
充当隐式循环模型的视图。您可以看看这是如何在模式中分隔类的


因为<代码> GraphicsDisplay 是完全由您的程序呈现的自定义组件,请考虑重写<代码> GETApple Resisie()/Cuth>以定义面板的几何结构。然后,封闭框架可以只使用

pack()
,而不知道游戏中使用的其他显示面板。这是一个示例。

在构造函数中将组件(JPanel)添加到容器(JFrame)中:


在构造函数中,将组件(JPanel)添加到容器(JFrame):


您必须重新表述您的问题。注意:如果面板报告自身不透明(默认情况下),则paintComponent无效。您必须重新表述您的问题。注意:如果面板报告自身不透明(默认情况下),则paintComponent无效你能修改我添加的代码来描述你正在显示的内容吗?-1用于a)空paintComponent override b)getGraphics-这不是SwingHanks中自定义绘制的方式:-)以进一步澄清,您可以在方法中添加一条注释,提示进行自定义绘制,您可以修改我添加的代码来描述您正在显示的内容吗?-1对于a)空paintComponent override b)getGraphics-这不是Swingthanks中进行自定义绘制的方式:-)为了进一步澄清,您可以在方法中添加一条注释,提示在那里进行自定义绘制,“作为惯例,
add
及其变体,
remove
setLayout
已被覆盖,以便根据需要转发到
contentPane
。”-“作为惯例,
add
及其变体,
remove
setLayout
已被覆盖,以便根据需要转发到
contentPane
。”-