Создание интерактивного графического интерфейса для Java-игры - PullRequest
2 голосов
/ 26 сентября 2011

Привет, ребята, я создаю игру, похожую на farmville в java, и мне просто интересно, как бы я реализовал интерактивные объекты / кнопки, которые пользователь обычно нажимал для взаимодействия с игровым клиентом.

Я не хочу использовать библиотеку Swing (общие объекты, похожие на Windows), я хотел бы импортировать пользовательские изображения для своих кнопок и назначить свойства, подобные кнопкам, тем изображениям, которые будут использоваться для графического интерфейса.

Любой совет? Есть указатели? Похоже, я не могу найти эту информацию на YouTube или некоторых других игровых сайтах Java, поскольку они показывают только простой пример с использованием Swing.

Любая помощь будет высоко оценена, спасибо!

С уважением Gareth

Ответы [ 2 ]

5 голосов
/ 26 сентября 2011

Вы действительно не хотите использовать Swing, или вы просто не хотите, чтобы JButton и другие элементы управления Swing выглядели по умолчанию? Что значит «(общие объекты, похожие на Windows)?»

Существует множество источников, которые описывают настройки кнопок для включения изображений поверх них: Создание пользовательской кнопки в Java

JButton и другие элементы управления имеют все события и методы, связанные с добавлением прослушивателей кликов и т. Д. Возможно, вы не хотите создавать свой собственный элемент управления. Нам не хватает информации, например, что означает «интерактивные объекты»?

Если вы просто хотите добавить значок в JButton, используйте конструктор, который принимает Icon .

0 голосов
/ 27 сентября 2011

Вы можете использовать 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);
    }

}
...