Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为java游戏创建交互式GUI_Java_User Interface_Hud - Fatal编程技术网

为java游戏创建交互式GUI

为java游戏创建交互式GUI,java,user-interface,hud,Java,User Interface,Hud,嘿,伙计们,我正在创建一个类似java中farmville的游戏,我只是想知道如何实现交互对象/按钮,用户通常会单击这些对象/按钮与游戏客户端进行交互 我不想使用swing库(通用windows looky-likey对象),我想为我的按钮导入自定义图像,并为那些将用于GUI的图像分配按钮属性 有什么建议吗?有什么建议吗?我似乎无法通过youtube或其他一些java游戏网站找到这些信息,因为它们只展示了使用swing的简单示例 任何帮助都将不胜感激,谢谢 问候 Gareth您真的不想使用Swi

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

我不想使用swing库(通用windows looky-likey对象),我想为我的按钮导入自定义图像,并为那些将用于GUI的图像分配按钮属性

有什么建议吗?有什么建议吗?我似乎无法通过youtube或其他一些java游戏网站找到这些信息,因为它们只展示了使用swing的简单示例

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

问候
Gareth

您真的不想使用Swing,还是不想使用JButton和其他Swing控件的默认外观?“通用windows看起来像对象”是什么意思

有许多资料来源描述了自定义按钮,以便在按钮顶部包含图像:

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


如果您只想在JButton中添加图标,请使用。

您可以使用JButton,只需覆盖
绘制
功能即可。你想在那里画什么就画什么。这需要一段时间,直到你第一次了解它的工作原理。我建议您阅读一些关于
事件调度线程的内容(这是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);
    }

}

您确实应该从Swing或SWT开始,以获得环境的默认外观和感觉,并从中进行自定义。如果你从AWT开始,那么你需要为每个操作系统设计你的应用程序。我只是不喜欢JButton的默认外观。我只是想知道如何改变它。我的游戏按钮将是长方形的,上面有艺术图像,以表示以下内容:角色按钮建筑按钮地图按钮市场按钮希望这为您清除了一些内容。如果您想要一个带有图像的基本按钮(如Sim City 2000面板),只需使用JButton的构造函数,该构造函数带有一个图标。“我只是不喜欢JButton的默认外观。”演示了如何更改它,以便只显示一幅图像。该按钮将与您在其中输入的任何图像一样漂亮。:)谢谢大家的评论和帮助。。我要走这条路,从中学习。。。我感谢你的时间和指导!为什么在不调用super.paint()的情况下对JButton进行子脚本设置并覆盖paint?我认为这行不通。为什么不使用带有图标的JButton构造函数呢-1)为什么要覆盖
绘制(图形)
而不是
绘制组件(图形)
?2) 为什么要扩展JButton
?它有很多方法可以为不同的用途设置图像(参见我的链接示例)。所有的降级是怎么回事?只是想帮助别人,这是我所知道的最好的。这里有一些事情需要思考:1)最正确的做事方式可能很难学,而这并不总是提问者想要的2)根据他的问题,他对此有点陌生。这是我从中学到的第一件事,这是一条通向那个方向的好途径。3) 他认为我的答案是最好的,所以这个简单的事实对他来说可能是最重要的。4) 如果这对他来说有很大的不同,他可以打开另一个话题,问什么更有效