心血来潮想做一个没什么原因,想从网上找点灵感,结果发现这个还项目算大的,于是便开始自己动手 ,写一部算一步。今天完成了它的一开始的启动页面。
今天写页面和以往不一样,用的是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);
}
}
未完待续。。。
(这是我扣的图还有一张来自网络的图,原谅我找不到原路径了,如果有需要就拿去吧)