3

嘿伙计们,我正在用java创建一个类似于farmville的游戏,我只是想知道如何实现用户通常单击以与游戏客户端交互的交互式对象/按钮。

我不想使用 swing 库(通用窗口看起来很像对象),我想为我的按钮导入自定义图像,并将类似按钮的属性分配给那些将用于 GUI 的图像。

有什么建议吗?任何指针?我似乎无法通过 youtube 或其他一些 java 游戏网站找到该信息,因为它们仅显示使用 swing 的简单示例。

任何帮助将不胜感激,谢谢!

问候加雷斯

4

2 回答 2

5

您真的不想使用 Swing,还是只是不想使用 JButton 和其他 Swing 控件的默认外观和感觉?" (generic windows looky likey objects)," 是什么意思?

有许多资源描述了自定义按钮以在其上包含图像: Creating a custom button in Java

JButton 和其他控件具有与添加单击侦听器等相关的所有事件和方法。您可能不想创建自己的控件。我们没有足够的信息可以解决,例如“交互式对象”是什么意思?

如果您只是想将图标添加到 JButton,请使用采用 Icon 的构造函数

于 2011-09-26T19:29:22.200 回答
-1

您可以使用 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);
    }

}
于 2011-09-26T20:09:45.647 回答