我有一个名为survival的类,它包含了初始化程序的main方法。与其将图形代码放在这个类中,我如何才能将它移到一个与生存分离的新类中呢?
下面是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);
}
}发布于 2011-12-15 13:19:23
似乎您只需在Survival构造函数中add()一个GraphicsDisplay实例。
...
setResizable(false);
add(new GraphicsDisplay());
setSize(applicationWidth, applicationHeight);
...在这种情况下,GraphicsDisplay充当隐式圆形模型的视图。您可能会看到此example如何在Model–View–Controller模式中分隔类。
由于GraphicsDisplay是完全由您的程序呈现的自定义组件,因此请考虑覆盖getPreferredSize()以定义面板的几何图形。然后,封闭的框架可以只使用pack(),而不需要知道游戏中使用的其他显示面板的任何信息。这个LissajousPanel就是一个例子。
发布于 2011-12-15 10:39:27
您必须扩展JPanel (JComponent)并覆盖paintComponent(Graphics g)方法。
例如,
public class MyPanel extends JPanel
{
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g); // suggestion of @kleopatra
}
}发布于 2011-12-15 13:22:13
在构造函数中,向容器(JFrame)添加组件(JPanel):
public Survival() {
setTitle("Survival");
setResizable(false);
setSize(applicationWidth, applicationHeight);
this.getContentPane().add( new GraphicsDisplay() );
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}https://stackoverflow.com/questions/8514361
复制相似问题