2011-09-26 45 views
2

嘿,我正在创建一个类似于java的farmville的游戏,我只是想知道如何实现用户通常会点击的交互式对象/按钮来与游戏交互客户。为java游戏创建一个交互式图形用户界面

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

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

任何帮助将深表感谢!

问候 加雷思

+0

您真的应该从Swing或SWT开始,获得您的环境的默认外观和自定义。如果您从AWT开始,那么您需要将工作分解为每个操作系统的应用程序风格。 –

回答

0

您可以使用JButton,只是覆盖paint函数。并画出你想要的东西。这需要一段时间,直到你第一次得到它如何工作。我建议你阅读一下event-dispatching threadhere是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); 
    } 

} 
+0

为什么在不调用super.paint()的情况下对JButton进行subclsasing和重写paint?我认为这不会起作用。 为什么不使用带有Icon的JButton构造函数? http:// leepoint。net/notes-java/GUI/components/20buttons/23buttonicons.html –

+0

-1 1)为什么重写'paint(Graphics)'而不是'paintComponent(Graphics)'? 2)你为什么要扩展'JButton'?它有方法来设置图像的一些不同的用途(请参阅我的链接示例)。 –

+0

“这是你想学习的功能”。事实上,马丁。 –

5

难道你真的不想使用Swing,或者你只是不想默认的外观和感觉一个JButton和其他摇摆控制的? “(通用窗口看起来很像对象)”是什么意思?

有很多来源,在那里,描述自定义按钮包括在它们上面图片: Creating a custom button in Java

的JButton和其他控件与添加点击监听器相关联的所有事件和方法等,你可能穿上”你想创建你自己的控制。我们没有足够的信息去解决问题,例如“交互式对象”是什么意思?

如果您只是想将图标添加到JButton,请使用the constructor that takes an Icon

+0

我只是不喜欢JButton的默认外观。我只是想知道如何去改变它。我的游戏按键将是矩形与他们的艺术形象来表示喜欢的事物: 字符按钮 建筑物按钮 地图按钮 卖场按钮 希望这清除了一点东西了你。 – Gareth

+1

如果你正在讨论想要一个带有图像的基本按钮(如Sim City 2000面板),只需使用带有图标的JButton构造函数即可。 –

+2

*“我只是不喜欢JButton的默认外观。”* [This source](http://stackoverflow.com/questions/6743306/how-do-i-create-an-event-handler-for- a-jlabel/6743726#6743726)显示如何更改它,以便只显示图像。该按钮的显示效果与放入其中的图像完全相同。 :) –