实例介绍
【实例简介】
【实例截图】
【核心代码】
package frame; import java.awt.BorderLayout; import javax.swing.BorderFactory; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.Box; import javax.swing.JLabel; import java.awt.GridLayout; import javax.swing.SwingConstants; import java.awt.Font; import javax.swing.JButton; import suanfa.Move; import suanfa.Tools; import suanfa.TurnJLabelToString; import java.awt.Color; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.Properties; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; public class MainFrame extends JFrame { /** * */ private static final long serialVersionUID = -1437480348206159174L; private JPanel contentPane; private JLabel[] DataLabel = new JLabel[16]; private TurnJLabelToString turn; private String SCORE; private JLabel SCORELabel_DATA; private String HIGH_SCORE; private JLabel HIGH_SCORELabel_DATA; private Properties props; /** * Launch the application. */ // public static void main(String[] args) // { // //windows外观 // try // { // UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); // // } // catch (Exception e) // { // e.printStackTrace(); // } // EventQueue.invokeLater(new Runnable() // { // public void run() // { // try // { // MainFrame frame = new MainFrame(); // frame.setVisible(true); // } // catch (Exception e) // { // e.printStackTrace(); // } // } // }); // } public MainFrame() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(600, 300, 150, 400); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); contentPane.setLayout(new BorderLayout(0, 0)); setContentPane(contentPane); setResizable(false);//锁钉尺寸 JPanel panel = new JPanel(); panel.setBackground(Color.WHITE); contentPane.add(panel, BorderLayout.CENTER); panel.setLayout(new GridLayout(4, 4, 0, 0)); //设置16×16的数据表格 for (int i = 0; i < 16; i ) { DataLabel[i] = new JLabel("", JLabel.CENTER);// 将显示的字符设置为居中 DataLabel[i].setFont(new Font("宋体", Font.BOLD, 12)); DataLabel[i].setForeground(Color.black);//设置字体颜色 DataLabel[i].setBorder(BorderFactory.createLineBorder(Color.BLACK));//设边框体颜色 DataLabel[i].setOpaque(true); DataLabel[i].setBackground(Color.WHITE);//将背景设置成白色 panel.add(DataLabel[i]); DataLabel[i].setText("0"); } Box verticalBox = Box.createVerticalBox(); contentPane.add(verticalBox, BorderLayout.NORTH); JPanel panel_1 = new JPanel(); verticalBox.add(panel_1); panel_1.setLayout(new GridLayout(1, 0, 0, 0)); JPanel panel_6 = new JPanel(); panel_1.add(panel_6); JLabel label_2 = new JLabel("2048"); label_2.setHorizontalAlignment(SwingConstants.CENTER); label_2.setForeground(new Color(178, 34, 34)); panel_6.add(label_2); label_2.setFont(new Font("Times New Roman", Font.BOLD, 34)); JPanel panel_3 = new JPanel(); panel_1.add(panel_3); panel_3.setLayout(new GridLayout(4, 0, 0, 0)); JLabel SCORELabel = new JLabel("SCORE:"); SCORELabel.setFont(new Font("Times New Roman", Font.BOLD, 11)); panel_3.add(SCORELabel); SCORELabel_DATA = new JLabel("0"); SCORELabel_DATA.setForeground(Color.RED); SCORELabel_DATA.setFont(new Font("Times New Roman", Font.BOLD, 15)); panel_3.add(SCORELabel_DATA); JLabel HIGH_SCORELabel = new JLabel("HIGH SCORE:"); HIGH_SCORELabel.setFont(new Font("Times New Roman", Font.BOLD, 11)); panel_3.add(HIGH_SCORELabel); HIGH_SCORELabel_DATA = new JLabel("0"); HIGH_SCORELabel_DATA.setForeground(Color.red); HIGH_SCORELabel_DATA.setFont(new Font("Times New Roman", Font.BOLD, 15)); panel_3.add(HIGH_SCORELabel_DATA); JPanel panel_2 = new JPanel(); verticalBox.add(panel_2); panel_2.setLayout(new BorderLayout(0, 0)); JLabel label_3 = new JLabel("2 2=4 4=8..."); label_3.setFont(new Font("宋体", Font.BOLD, 15)); panel_2.add(label_3); JPanel panel_7 = new JPanel(); contentPane.add(panel_7, BorderLayout.SOUTH); panel_7.setLayout(new BorderLayout(0, 0)); JPanel panel_10 = new JPanel(); panel_7.add(panel_10); panel_10.setLayout(new GridLayout(0, 1, 0, 0)); JPanel panel_11 = new JPanel(); panel_10.add(panel_11); panel_11.setLayout(new GridLayout(0, 3, 0, 0)); JPanel panel_14 = new JPanel(); panel_11.add(panel_14); JPanel panel_15 = new JPanel(); panel_11.add(panel_15); JPanel panel_16 = new JPanel(); panel_11.add(panel_16); JPanel panel_12 = new JPanel(); panel_10.add(panel_12); panel_12.setLayout(new GridLayout(0, 3, 0, 0)); JPanel panel_17 = new JPanel(); panel_12.add(panel_17); JButton btnU = new JButton("\u2191"); btnU.setMnemonic(KeyEvent.VK_UP); JButton btnL = new JButton("\u2190"); btnL.setMnemonic(KeyEvent.VK_LEFT); JLabel lblRst = new JLabel("Re"); JButton btnR = new JButton("\u2192"); btnR.setMnemonic(KeyEvent.VK_RIGHT); JButton btnD = new JButton("\u2193"); btnD.setMnemonic(KeyEvent.VK_DOWN); panel_15.add(btnU); panel_17.add(btnL); JPanel panel_18 = new JPanel(); panel_12.add(panel_18); panel_18.add(lblRst); JPanel panel_19 = new JPanel(); panel_12.add(panel_19); panel_19.add(btnR); JPanel panel_13 = new JPanel(); panel_10.add(panel_13); panel_13.setLayout(new GridLayout(0, 3, 0, 0)); JPanel panel_20 = new JPanel(); panel_13.add(panel_20); JPanel panel_21 = new JPanel(); panel_13.add(panel_21); panel_21.add(btnD); JPanel panel_22 = new JPanel(); panel_13.add(panel_22); /* * 启动后读取配置参数,分数、最高分、data数据 * 显示在界面中 */ props = new Properties(); try { props.load(new FileInputStream("DATA.ini")); } catch (FileNotFoundException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } catch (IOException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } SCORE = props.getProperty("SCORE");//分数 HIGH_SCORE = props.getProperty("HIGH_SCORE");//历史最高 String DATA = props.getProperty("DATA");//数据 SCORELabel_DATA.setText(SCORE);//把分数显示在分数栏上 HIGH_SCORELabel_DATA.setText(HIGH_SCORE);//把历史最高显示在历史最高栏上 String[] chrstr = DATA.split("_"); //把数据转化为String数组 if(Tools.All0OrNot(chrstr))//如果全0,随机在2处填2 { int a=(int)(Math.random()*chrstr.length); chrstr[a]="2"; int b=(int)(Math.random()*chrstr.length); chrstr[b]="2"; ChangeJLabel.ChangeJLabelColor(chrstr,DataLabel ); } else { ChangeJLabel.ChangeJLabelColor(chrstr,DataLabel ); //把数据改变对应颜色后显示在数据区内 } Move.scorecut(); Move.setscore(SCORE); //上按键监听 btnU.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { turn=new TurnJLabelToString (DataLabel); String[] s=turn.DataUP(); if(turn.stringArrayCompare()) { ChangeJLabel.ChangeJLabelColor(s,DataLabel ); int point2=turn.getRandomFromArray(s); DataLabel[point2].setText(Tools.Select1()); if(DataLabel[point2].getText().equals("2")) { DataLabel[point2].setForeground(Color.black); DataLabel[point2].setBackground(Color.WHITE); } else { DataLabel[point2].setForeground(Color.black); DataLabel[point2].setBackground(new Color(255,165,0)); } SCORELabel_DATA.setText(Move.getscore()); if(Integer.valueOf(Move.getscore())>Integer.valueOf(HIGH_SCORE)) { HIGH_SCORELabel_DATA.setText(Move.getscore()); } try { OutputStream fos = new FileOutputStream("DATA.ini"); props.setProperty("SCORE", Move.getscore()); props.setProperty("HIGH_SCORE", HIGH_SCORELabel_DATA.getText()); String indata=new String(); String[] indata2=new String[16]; for(int i=0;i<DataLabel.length;i ) { indata2[i]=DataLabel[i].getText(); } for(int i=0;i<indata2.length;i ) { indata=indata indata2[i] "_"; } props.setProperty("DATA", indata); props.store(fos, "Update '" "SCORE" "' value"); } catch (FileNotFoundException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } catch (IOException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } } } }); //下按键监听 btnD.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { turn=new TurnJLabelToString (DataLabel); String[] s=turn.DataDOWN(); if(turn.stringArrayCompare()) { ChangeJLabel.ChangeJLabelColor(s,DataLabel ); int point2=turn.getRandomFromArray(s); DataLabel[point2].setText(Tools.Select1()); if(DataLabel[point2].getText().equals("2")) { DataLabel[point2].setForeground(Color.black); DataLabel[point2].setBackground(Color.WHITE); } else { DataLabel[point2].setForeground(Color.black); DataLabel[point2].setBackground(new Color(255,165,0)); } SCORELabel_DATA.setText(Move.getscore()); if(Integer.valueOf(Move.getscore())>Integer.valueOf(HIGH_SCORE)) { HIGH_SCORELabel_DATA.setText(Move.getscore()); } try { OutputStream fos = new FileOutputStream("DATA.ini"); props.setProperty("SCORE", Move.getscore()); props.setProperty("HIGH_SCORE", HIGH_SCORELabel_DATA.getText()); String indata=new String(); String[] indata2=new String[16]; for(int i=0;i<DataLabel.length;i ) { indata2[i]=DataLabel[i].getText(); } for(int i=0;i<indata2.length;i ) { indata=indata indata2[i] "_"; } props.setProperty("DATA", indata); props.store(fos, "Update '" "SCORE" "' value"); } catch (FileNotFoundException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } catch (IOException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } } } }); //左按键监听 btnL.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { turn=new TurnJLabelToString (DataLabel); String[] s=turn.DataLEFT(); if(turn.stringArrayCompare()) { ChangeJLabel.ChangeJLabelColor(s,DataLabel ); int point2=turn.getRandomFromArray(s); DataLabel[point2].setText(Tools.Select1()); if(DataLabel[point2].getText().equals("2")) { DataLabel[point2].setForeground(Color.black); DataLabel[point2].setBackground(Color.WHITE); } else { DataLabel[point2].setForeground(Color.black); DataLabel[point2].setBackground(new Color(255,165,0)); } SCORELabel_DATA.setText(Move.getscore()); if(Integer.valueOf(Move.getscore())>Integer.valueOf(HIGH_SCORE)) { HIGH_SCORELabel_DATA.setText(Move.getscore()); } try { OutputStream fos = new FileOutputStream("DATA.ini"); props.setProperty("SCORE", Move.getscore()); props.setProperty("HIGH_SCORE", HIGH_SCORELabel_DATA.getText()); String indata=new String(); String[] indata2=new String[16]; for(int i=0;i<DataLabel.length;i ) { indata2[i]=DataLabel[i].getText(); } for(int i=0;i<indata2.length;i ) { indata=indata indata2[i] "_"; } props.setProperty("DATA", indata); props.store(fos, "Update '" "SCORE" "' value"); } catch (FileNotFoundException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } catch (IOException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } } } }); //右按键监听 btnR.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { turn=new TurnJLabelToString (DataLabel); String[] s=turn.DataRIGHT(); if(turn.stringArrayCompare()) { ChangeJLabel.ChangeJLabelColor(s,DataLabel ); int point2=turn.getRandomFromArray(s); DataLabel[point2].setText(Tools.Select1()); if(DataLabel[point2].getText().equals("2")) { DataLabel[point2].setForeground(Color.black); DataLabel[point2].setBackground(Color.WHITE); } else { DataLabel[point2].setForeground(Color.black); DataLabel[point2].setBackground(new Color(255,165,0)); } SCORELabel_DATA.setText(Move.getscore()); if(Integer.valueOf(Move.getscore())>Integer.valueOf(HIGH_SCORE)) { HIGH_SCORELabel_DATA.setText(Move.getscore()); } try { OutputStream fos = new FileOutputStream("DATA.ini"); props.setProperty("SCORE", Move.getscore()); props.setProperty("HIGH_SCORE", HIGH_SCORELabel_DATA.getText()); String indata=new String(); String[] indata2=new String[16]; for(int i=0;i<DataLabel.length;i ) { indata2[i]=DataLabel[i].getText(); } for(int i=0;i<indata2.length;i ) { indata=indata indata2[i] "_"; } props.setProperty("DATA", indata); props.store(fos, "Update '" "SCORE" "' value"); } catch (FileNotFoundException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } catch (IOException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } } } }); //双击Re后恢复初始状态 lblRst.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { int clickTimes = e.getClickCount(); if (clickTimes == 2) { int res=JOptionPane.showConfirmDialog(null, "确定要重置吗?", "重置", JOptionPane.YES_NO_OPTION); if(res==JOptionPane.YES_OPTION) { //点击“是”后执行这个代码块 SCORE ="0";//分数 SCORELabel_DATA.setText(SCORE);//把分数显示在分数栏上 String[] chrstr=new String[16]; for(int i=0;i<chrstr.length;i ) { chrstr[i]="0"; } ChangeJLabel.ChangeJLabelColor(chrstr,DataLabel ); if(Tools.All0OrNot(chrstr))//如果全0,随机在2处填2 { int a=(int)(Math.random()*chrstr.length); chrstr[a]="2"; int b=(int)(Math.random()*chrstr.length); chrstr[b]="2"; ChangeJLabel.ChangeJLabelColor(chrstr,DataLabel ); } else { ChangeJLabel.ChangeJLabelColor(chrstr,DataLabel ); //把数据改变对应颜色后显示在数据区内 } Move.scorecut(); Move.setscore(SCORE); } else { //点击“否”后执行这个代码块 return; } } } }); } //得到DataLabel数组 public JLabel[] getJLabel() { return DataLabel; } public void setJLabel() { } }
好例子网口号:伸出你的我的手 — 分享!
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论