java实现坦克大战的的第一天

心血来潮想做一个没什么原因,想从网上找点灵感,结果发现这个还项目算大的,于是便开始自己动手 ,写一部算一步。今天完成了它的一开始的启动页面。

网上搜的背景图
今天写页面和以往不一样,用的是Eclipse支持的windowbuild插件,确实挺好用的,所见即所得。
今天遇到的问题有:

如何导入图片,百度到两种方法,一是先来一个标签JLable,图片放标签里面,而是重写jpanel的方法,不是很懂,所以用的是第一种。效果还可以,只是图片的大小无法控制,只能很笨的用Ps修改原图文件。

层级问题,如何处理元素的层级问题,在使用JLayeredPane后,被很好的解决了。

面板的透明问题:

panel.setOpaque(false);

接下来想做的是在一个什么都没有的页面,有一个坦克图片,我可以通过键盘控制它的上下左右移动,今天也写了好一会,但是一直搞不定。明天吧。。或者后天
附上源代码:

package xyz.jz.tank1;

import java.awt.EventQueue;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.swing.JFrame;
import javax.swing.JLayeredPane;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import java.awt.Font;

public class FirstUI {

	private JFrame frame;

	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					FirstUI window = new FirstUI();
					window.frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	public FirstUI() {
		initialize();
	}

	/**
	 * Initialize the contents of the frame.
	 */
	private void initialize() {
		frame = new JFrame("坦克大战");
		frame.setBounds(100, 100, 813, 504);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.getContentPane().setLayout(null);
		
		JLayeredPane layeredPane = new JLayeredPane();
		layeredPane.setBounds(10, 10, 779, 447);
		frame.getContentPane().add(layeredPane);
		layeredPane.setLayout(null);
		
		BufferedImage img=null;
		try {
			img=ImageIO.read(new File("./img/UI.jpg"));
			
		} catch (IOException e) {
			System.out.println("没有找到");
		}
		
		
		JLabel lblNewLabel = new JLabel(new ImageIcon(img));
		layeredPane.setLayer(lblNewLabel, -1);
		lblNewLabel.setBounds(10, 10, 764, 405);
		layeredPane.add(lblNewLabel);
		
		
		
		JPanel panel = new JPanel();
		layeredPane.setLayer(panel, 0);
		panel.setBounds(508, 153, 261, 284);
		layeredPane.add(panel);
		panel.setLayout(null);
		panel.setOpaque(false);
		
		JButton btnNewButton = new JButton("新的开始");
		btnNewButton.setBounds(94, 62, 103, 41);
		panel.add(btnNewButton);
		
		JButton btnNewButton_1 = new JButton("继续游戏");
		btnNewButton_1.setBounds(94, 120, 106, 41);
		panel.add(btnNewButton_1);
		
		JButton btnNewButton_2 = new JButton("帮助和说明");
		btnNewButton_2.setBounds(94, 179, 107, 36);
		panel.add(btnNewButton_2);
		
		JLabel label = new JLabel("\u5766 \u514B \u5927 \u6218");
		label.setFont(new Font("宋体", Font.BOLD, 39));
		label.setBounds(66, 55, 279, 74);
		layeredPane.add(label);
	}
}

未完待续。。。

在这里插入图片描述在这里插入图片描述
(这是我扣的图还有一张来自网络的图,原谅我找不到原路径了,如果有需要就拿去吧)

发布了29 篇原创文章 · 获赞 1 · 访问量 694

猜你喜欢

转载自blog.csdn.net/weixin_44414413/article/details/101076466
今日推荐