我知道如何将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窗口?
答案 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)
让您的课程延长ImageIcon
或JButton
。这是因为add()
的{{1}}方法需要JPanel
。