java - 将对象添加到 Jpanel

标签 java swing jframe jpanel

我知道如何将 JButton 添加到 JPanel,但是我制作的类怎么样?

我有这门课:

public class Monster
{
    private ImageIcon monster;
    private JButton b;

    public Monster()
    {
        monster = new ImageIcon("Monster.jpg");
        b = new JButton(monster);
        b.setIcon(monster);
    }
}

我有另一个类(class),在该类(class)中我想将图标添加到我的 Swing 窗口。

import javax.swing.*;
import java.awt.*;
public class GameWindow
{
    private JFrame frame;
    private JPanel panel;
    private Monster monster;

    public GameWindow()
    {
        frame = new JFrame();
        panel = new JPanel();
        monster = new Monster();

        panel.add(monster); 

        frame.setContentPane(panel); 
        frame.setTitle("Game"); 
        frame.setSize(400,400); 
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
}

panal.add() 方法适用于 JButton,但不适用于我的 Monster 类。如何将 Monster 对象添加到我在 GameWindow 类中创建的 Swing 窗口?

最佳答案

您应该使用 Swing 组件。扩展 Swing 组件(或任何其他 Java 类)的唯一原因是您想要重写其中一个类方法。

您的 Monster 类中缺少一个方法。

public class Monster
{
    private ImageIcon monster;
    private JButton b;

    public Monster()
    {
        monster = new ImageIcon("Monster.jpg");
        b = new JButton(monster);
        b.setIcon(monster);
    }

    public JButton getMonsterButton() {
        return b;
    }
}

GameWindow 类中的添加行如下所示:

    panel.add(monster.getMonsterButton());

关于java - 将对象添加到 Jpanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22183086/

相关文章:

Java:客户端套接字不读取第二行并在终止符行之后保持打开状态

java - 在此程序中,当我添加更多标签时,已准备好的标签不会显示。

java - 无法更改 JFrame ContentPane 的背景颜色

java - 我可以使用 C++ 中的 Android NDK 创建位图并将它们快速传递给 Java 吗?

java - 将值设置为对象数组

java - 如何从音量级别创建 MIDI Sysex Master Volume 消息?

java - GridBagLayout 对齐文本字段吗?

java - Swing GroupLayout 只显示一个组件?如何解决这个问题?

java - 为什么当我添加 for 循环时我的 jframe 变黑?

java - 图像未加载到框架中