将对象添加到Jpanel

时间:2014-03-04 21:08:47

标签: 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);
    }
}

我有另一个班级,在那个班级我想把这个图标添加到我的摇摆窗口。

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()方法适用于JButtons,但不适用于我的Monster类。如何将我的Monster对象添加到我在GameWindow类中创建的Swing窗口?

3 个答案:

答案 0 :(得分:2)

您应该使用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());

答案 1 :(得分:1)

试试这个,因为JPanel接受了Swing UI个组件,这使得你的班级MonsterIcon成为Swing的一部分(在非专业人士的名词中)

public class MonsterIcon extends JButton {

      public MonsterIcon () {
        this(new ImageIcon("Monster.jpg"));
      }

      public MonsterIcon (ImageIcon icon) {
        setIcon(icon);
        setMargin(new Insets(0, 0, 0, 0));
        setIconTextGap(0);
        setBorderPainted(false);
        setBorder(null);
        setText(null);
        setSize(icon.getImage().getWidth(null), icon.getImage().getHeight(null));
      }
 }

答案 2 :(得分:0)

让您的课程延长ImageIconJButton。这是因为add()的{​​{1}}方法需要JPanel