嘿伙计我正在创建一个类似于java中的farmville的游戏,我只是想知道如何实现用户通常点击与游戏客户端交互的交互式对象/按钮。
我不想使用swing库(通用窗口看起来像对象),我想为我的按钮导入自定义图像,并为那些将用于GUI的图像分配属性按钮。
有什么建议吗?有什么指针吗?我似乎无法通过youtube或其他一些Java游戏网站找到这些信息,因为他们只是展示了使用swing的简单示例。
非常感谢任何帮助,谢谢!
此致 加雷
答案 0 :(得分:5)
你真的不想使用Swing,或者你只是不想要JButton和其他挥杆控件的默认外观? “(通用窗口看起来像对象),”是什么意思?
有许多来源描述自定义按钮以在其上包含图像: Creating a custom button in Java
JButton和其他控件具有与添加单击侦听器等相关的所有事件和方法。您可能不希望创建自己的控件。我们没有足够的信息,例如“交互式对象”是什么意思?
如果您只是想在JButton中添加图标,请使用the constructor that takes an Icon。
答案 1 :(得分:-1)
您可以使用JButton,只需覆盖paint
功能即可。并在那里画出你想要的东西。这需要一段时间,直到你第一次得到它如何工作。我建议你先阅读一下event-dispatching thread
(here是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);
}
}