首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在主类之外使用Java的2d图形

在主类之外使用Java的2d图形
EN

Stack Overflow用户
提问于 2011-12-15 10:23:58
回答 3查看 361关注 0票数 1

我有一个名为survival的类,它包含了初始化程序的main方法。与其将图形代码放在这个类中,我如何才能将它移到一个与生存分离的新类中呢?

下面是Survival.java:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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);
   }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-15 13:19:23

似乎您只需在Survival构造函数中add()一个GraphicsDisplay实例。

代码语言:javascript
复制
...
setResizable(false);
add(new GraphicsDisplay());
setSize(applicationWidth, applicationHeight);
...

在这种情况下,GraphicsDisplay充当隐式圆形模型的视图。您可能会看到此example如何在Model–View–Controller模式中分隔类。

由于GraphicsDisplay是完全由您的程序呈现的自定义组件,因此请考虑覆盖getPreferredSize()以定义面板的几何图形。然后,封闭的框架可以只使用pack(),而不需要知道游戏中使用的其他显示面板的任何信息。这个LissajousPanel就是一个例子。

票数 3
EN

Stack Overflow用户

发布于 2011-12-15 10:39:27

您必须扩展JPanel (JComponent)并覆盖paintComponent(Graphics g)方法。

例如,

代码语言:javascript
复制
public class MyPanel extends JPanel
{ 
   @Override
   public void paintComponent(Graphics g) {
       super.paintComponent(g); // suggestion of @kleopatra
   }
}
票数 2
EN

Stack Overflow用户

发布于 2011-12-15 13:22:13

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

代码语言:javascript
复制
public Survival() {
    setTitle("Survival");
    setResizable(false);
    setSize(applicationWidth, applicationHeight);

    this.getContentPane().add( new GraphicsDisplay() );

    setVisible(true);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8514361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档