这个项目应该使用什么布局(Java)
我正在为班级的一个项目制作一个平台游戏,需要在一些平台上进行小鸡角色跳跃。我有一个开始屏幕和一个按钮,当按钮被点击时,它会将帧更改为第一级。当我将鸡肉角色添加到框架以及背景图像中时,我所能看到的只是背景图像。我应该使用不同的布局还是有其他我可以做的。这是我的代码:这个项目应该使用什么布局(Java),java,swing,jframe,jpanel,layout-manager,Java,Swing,Jframe,Jpanel,Layout Manager,我正在为班级的一个项目制作一个平台游戏,需要在一些平台上进行小鸡角色跳跃。我有一个开始屏幕和一个按钮,当按钮被点击时,它会将帧更改为第一级。当我将鸡肉角色添加到框架以及背景图像中时,我所能看到的只是背景图像。我应该使用不同的布局还是有其他我可以做的。这是我的代码: import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; impo
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.util.*;
import javax.imageio.ImageIO;
import javax.swing.*;
public class Main extends JFrame {
public Main(){
//Creates Chicken Character
final JLabel chicken = new JLabel(" ");
ImageIcon chick1 = new ImageIcon("chicken.gif");
ImageIcon chick2 = new ImageIcon("chicken2.gif");
chicken.setIcon(chick1);
//Sets Chicken Location
chicken.setLocation(1, 1);
//Creates Title Image
JLabel title = new JLabel(" ");
ImageIcon tl = new ImageIcon("title.gif");
title.setIcon(tl);
//Creates Start Image
final JButton start = new JButton("");
ImageIcon st = new ImageIcon("start.gif");
start.setIcon(st);
//Creates Options Image
JButton options = new JButton("");
ImageIcon opt = new ImageIcon("options.gif");
options.setIcon(opt);
options.setBackground(Color.BLACK);
//Creates label for level 0 background image
JLabel background = new JLabel(" ");
ImageIcon back = new ImageIcon("level0.gif");
background.setIcon(back);
//Creates a panel for level 0
final JPanel p5 = new JPanel();
chicken.setLocation(1, 1);
p5.add(background);
//Create first frame for "Start" button
final JPanel p1 = new JPanel();
p1.setLayout(new GridLayout(1, 1));
p1.add(start, BorderLayout.CENTER);
//Create second panel for title label
final JPanel p2 = new JPanel(new BorderLayout());
p2.setLayout(new GridLayout(1, 3));
p2.add(title, BorderLayout.WEST);
//Create third panel for "Options" button
final JPanel p3 = new JPanel(new BorderLayout());
p3.setLayout(new GridLayout(1, 1));
p3.add(options, BorderLayout.SOUTH);
//Creates fourth panel to organize all other primary
final JPanel p4 = new JPanel(new BorderLayout());
p4.setLayout(new GridLayout(1, 3));
p4.add(p1, BorderLayout.WEST);
p4.add(p2, BorderLayout.CENTER);
p4.add(p3, BorderLayout.EAST);
//When button is clicked, it changes the level
start.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(start.isEnabled()) {
remove(p4);
add(new ContentPanel());
add(chicken);
chicken.setLocation(100, 100);
setSize(1440, 500);
setLocale(null);
chicken.isOpaque();
validate();
}
else {
return;
}
}
});
//Adds fourth panel to frame
add(p4, BorderLayout.CENTER);
}
public static void main(String arg[]) {
Main frame = new Main();
//Finds screen size of monitor
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
//Creates the frame
frame.setTitle("Cockadoodle Duty: Awakening");
frame.setSize(screenSize);
frame.setLocale(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
String background = "#000000";
frame.setBackground(Color.decode(background));
}
}
class ContentPanel extends JPanel{
Image bgimage = null;
ContentPanel() {
MediaTracker mt = new MediaTracker(this);
bgimage = Toolkit.getDefaultToolkit().getImage("level0.gif");
mt.addImage(bgimage, 0);
try {
mt.waitForAll();
} catch (InterruptedException e){
e.printStackTrace();
}
}
protected void paintComponent(Graphics g){
super.paintComponent(g);
int imwidth = bgimage.getWidth(null);
int imheight = bgimage.getHeight(null);
g.drawImage(bgimage, 1, 1, null);
}
}
注意:我已经有一段时间没有使用图形API了 快速回答: 您需要在paintComponent方法中绘制所有内容。您的绘图例程应该检查所有游戏对象的状态,并相应地绘制它们。现在面板正在绘制背景图像-就是这样。添加鸡肉图像的方法与添加BG图像的方法相同 还有一些事情需要考虑: 如果您遇到屏幕闪烁,请查看双缓冲 不是为了让你不知所措,但你可能想对游戏编码做一些浅显的阅读。了解如何对游戏循环进行编码,以及每次循环执行时会发生什么 因为您使用的是OO语言,所以可能还应该创建一个Chicken类
public class Chicken {
private int x;
private int y;
private Image chickenSprtie;
//add get / set for access
}
或者甚至是一个普通的超类-具有int x,int y的精灵。或者甚至是一个可绘制的界面,强制所有可绘制的游戏对象使用通用的方法……我应该使用不同的布局还是可以做其他事情。我认为这是JPanel或BuffereImage中整个游戏区域的情况。我认为JavaFx对于这种开发非常方便。看见