java - 从不同的类绘制到面板

标签 java swing jframe jpanel java-2d

我一直在尝试学习如何在 Jpanel 上绘制游戏。我想从不同的类(例如管理 map 的类和管理玩家模型的类)中绘制它。

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Main
{
public static void main (String[] args)
{
    JFrame frame = new JFrame ("Java Game");
    frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
    frame.setSize (1000, 600);
    JPanel panel = new JPanel();
    panel.setBackground (Color.WHITE);
    Dimension size = new Dimension(1000,500);
    panel.add (new Player()); // Class with paintComponent method.
    panel.setPreferredSize(size);
    panel.setBackground(Color.BLUE);
    frame.getContentPane().add(panel);
    frame.setVisible(true);
}
}

下一个类

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JComponent;

@SuppressWarnings ("serial")
public class Player extends JComponent
{
int x = 50;
int y = 450;
public void paintComponent (Graphics g)
{
    super.paintComponent(g);
    g.setColor (Color.BLACK);
    g.fillRect (x, y, 50, 50);
}
}

最佳答案

您可能想要扩展JPanel。它已经是不透明的,并且可以为您处理背景颜色。还要给你的面板一个像他们一样的尺寸here ,然后就可以相对于尺寸进行绘制了。

image

Player p = new Player();
p.setBackground(Color.cyan);
frame.add(p);
frame.pack();
frame.setVisible(true);
…
public class Player extends JPanel {

    private static final int X = 320;
    private static final int Y = 240;

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.setColor(Color.BLACK);
        g.fillRect(getWidth() / 2 - 25, getHeight() / 2 - 25, 50, 50);
    }

    @Override
    public Dimension getPreferredSize() {
        return new Dimension(X, Y);
    }
}

关于java - 从不同的类绘制到面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30295445/

相关文章:

java - 没有spring-framework@Resource注解能正常使用吗?

java - Jtable更新选中行

java - 无法使用expandPath方法扩展JTree

java - 将文本附加到java文本区域中的某些列

Java:向 ChangeEvent 添加文本字段

java - 显示时只有一小部分窗口可见。我如何展示整个事情?

java - 在 Java 中的变量更改处做一些事情

java - 将 OSGI 包与 Maven 一起使用时如何隐藏嵌入式依赖项?

java - 将 JPanel 和 JScrollingPane 添加到 JFrame

java - 尝试@Override addViewControllers() 方法时出现问题 - Spring Security