嘿,朋友们,我正在制作一款类似于《farmville》的java游戏,我只是想知道我该如何实现用户通常会点击与游戏客户端互动的交互式对象/按钮。
我不想使用swing库(通用窗口看起来像对象),我想为我的按钮导入自定义图像,并将按钮属性分配给那些将用于GUI的图像。
任何建议吗?指针吗?我似乎无法通过youtube或其他一些java游戏网站找到这些信息,因为他们只展示了使用swing的简单示例。
任何帮助将不胜感激,谢谢!
的问候加雷思
您真的不想使用Swing吗,或者您只是不想要JButton和其他Swing控件的默认外观?"(通用窗口看起来像对象)"是什么意思?
有许多资源描述了自定义按钮以在其顶部包含图像:在Java中创建自定义按钮
JButton和其他控件具有与添加单击侦听器等相关的所有事件和方法。您可能不想创建自己的控件。我们没有足够的信息,例如"交互对象"是什么意思?
如果你只是想给JButton添加一个图标,那就使用带图标的构造函数。
您可以使用JButton,只需覆盖paint
函数。你想画什么就画什么。这需要一段时间,直到你第一次明白它是如何工作的。我建议你读一点关于event-dispatching thread
的知识(这里是java的解释)
这是我写的一些代码,所以你有一个简单的参考。
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class Test extends JButton implements ActionListener{
private static final long serialVersionUID = 1L;
Image img;
/** constuctor **/
public Test(String tImg, JFrame parent){
this.img = new ImageIcon(tImg).getImage();
this.addActionListener(this);
}
/*********** this is the function you want to learn ***********/
@Override
public void paint(Graphics g){
g.drawImage(this.img, 0, 0, null);
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO do some stuff when its clicked
JOptionPane.showMessageDialog(null, "you clicked the button");
}
public static void main(String[] args) {
JFrame f = new JFrame();
Test t = new Test("pics.gif", f);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLayout(new GridLayout(1, 1));
f.add(t);
f.setSize(400,600);
f.setVisible(true);
}
}