Java 游戏介绍页。使用JFrame
我正在尝试为我正在为班级制作的游戏制作一个介绍页。我设法在JFrames中显示图像,但我不知道如何使按钮工作。代码如下: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
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上
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();
}
}
}