Java 游戏介绍页。使用JFrame

Java 游戏介绍页。使用JFrame,java,swing,jframe,jpanel,Java,Swing,Jframe,Jpanel,我正在尝试为我正在为班级制作的游戏制作一个介绍页。我设法在JFrames中显示图像,但我不知道如何使按钮工作。代码如下: package nba_shootout_vol_two; import javax.imageio.ImageIO; import javax.swing.*; import java.awt.Color; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.Image; import c

我正在尝试为我正在为班级制作的游戏制作一个介绍页。我设法在JFrames中显示图像,但我不知道如何使按钮工作。代码如下:

package nba_shootout_vol_two;

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Image;

import com.jgoodies.forms.factories.DefaultComponentFactory;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.io.File;
import java.io.IOException;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.Button;

public class Runner{

public static void main(String[] args) {

    JFrame f=new JFrame("NBA Shootout Vol.2");

    try{
        f.setContentPane(new JLabel(new ImageIcon(ImageIO.read(new File("img/title.jpg")))));
    } catch(IOException e) {
        System.out.println("Image doesn't exitst");
    }
    f.setResizable(false);
    f.setSize(1280,720);
    f.setVisible(true);
}
}
因此,将弹出以下窗口:


如何使按钮可点击并能够实际操作?

在我看来,你正在重新发明按钮,我认为这是个好主意。那么,如何检查它们是否被单击:

  • 你需要一个鼠标听筒
  • 您需要一个函数来检查您是否在rect上
EventHandler示例:

import javax.swing.JFrame;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.*;
import java.awt.event.*;
public class EventHandler implements MouseListener {
    public JFrame pane;
    public int mouse_x;
    public int mouse_y;
    public int[] mouse=new int[5];
    @Override
     public void mousePressed(MouseEvent m) {
         switch (m.getButton()) {
             case (MouseEvent.BUTTON1) :
                 mouse[2]=1;
             case (MouseEvent.BUTTON2) :
                 mouse[3]=1;
             case (MouseEvent.BUTTON3) :
                 mouse[4]=1;

         }
     }
     @Override
     public void mouseClicked(MouseEvent m) {
         switch (m.getButton()) {
             case (MouseEvent.BUTTON1) :
                 mouse[2]=2;
             case (MouseEvent.BUTTON2) :
                 mouse[3]=2;
             case (MouseEvent.BUTTON3) :
                 mouse[4]=2;
         }
     }
     @Override
     public void mouseReleased(MouseEvent m) {
         switch (m.getButton()) {
             case (MouseEvent.BUTTON1) :
                 mouse[2]=3;
             case (MouseEvent.BUTTON2) :
                 mouse[3]=3;
             case (MouseEvent.BUTTON3) :
                 mouse[4]=3;
         }
     }
     @Override
     public void mouseEntered(MouseEvent m) {
     }
     @Override
     public void mouseExited(MouseEvent m) {
     }
     public void getMouse() {
         Component[] rel;
         rel = pane.getComponents();
         mouse_x=mouse[0]=MouseInfo.getPointerInfo().getLocation().x-rel[0].getLocationOnScreen().x;
         mouse_y=mouse[1]=MouseInfo.getPointerInfo().getLocation().y-rel[0].getLocationOnScreen().y;
     }
     public void updateMouse() {
         for (int i=0; i < mouse.length; i++) {
              mouse[i]=0;
         }
     }
     public void work() {
         getMouse();
         pane.requestFocus();
     }
     public void reset() {
         updateMouse();
     }
    public EventHandler(Frame plane) {
        this.pane=plane;
        pane.requestFocus();
        pane.addMouseListener(this);
    }
}

希望对你有帮助。如果您有任何问题,请随时发表意见。

请参阅。在提问之前,请通读全文。这是最基本的东西&所有的内容都有列举,还有一些例子。作为旁白,似乎
img/title.jpg
就是添加到框架中的所有内容,这意味着
Play Game
说明
都是相同图像的一部分。这使事情复杂化了。我建议你先学习如何用普通按钮开始游戏,然后再重新审视更复杂的任务,即雕刻一个图像以用作按钮图标。“在我看来,你正在重新设计按钮,我认为这是个好主意。”它与“重新设计轮子”排在第一位。@安德鲁·汤普森:我知道。
package nba_shootout_vol_two;

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Image;

import com.jgoodies.forms.factories.DefaultComponentFactory;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.io.File;
import java.io.IOException;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.Button;

public class Runner{
public static EventHandler events;
public static boolean rect_collide(int bx, int by, int bw, int bh) {
     return (events.mouse_x > bx && events.mouse_x < bx+bw && events.mouse_y > by && events.mouse_y < by+bh);
}
public static void main(String[] args) {

    JFrame f=new JFrame("NBA Shootout Vol.2");

    try{
        f.setContentPane(new JLabel(new ImageIcon(ImageIO.read(new File("img/title.jpg")))));
    } catch(IOException e) {
        System.out.println("Image doesn't exitst");
    }
    f.setResizable(false);
    f.setSize(1280,720);
    f.setVisible(true);
    events=new EventHandler(f);
    while (true) { //Game loop
        events.work();
        if (events.mouse[2]) { //Left mouse button down
            if (rect_collide(0,0,20,20)) { //Collision with button at x=0 y=0 w=20 h=20
                //Do your stuff
            }
        }
        f.repaint(); //Update the display since you are going to have changements after pressing the button
        events.reset();
    }
}
}