⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mui.java

📁 一个Java写的数独游戏
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
					settings.saveToFile(saveName);					setStatus("Theme File saved: " + saveName);				}			}else{				settings.saveToFile(saveName);				setStatus("Theme File saved: " + saveName);							}		}			}		private void saveDefaultMenuEvent(ActionEvent evt){		String dir;		dir = System.getProperty("user.home");		if(new File(dir + File.separator +"MUSoSu").exists()){			String fileURI = new String(dir + File.separator +					                    "MUSoSu" + File.separator +"settings.xml");			settings.saveToFile(fileURI);			setStatus("Default Settings were successfully set.");		}else{			setStatus("Unable to change default settings.");		}	}		private void loadThemeMenuEvent(ActionEvent evt){		String fname;		final JFileChooser fc = new JFileChooser();		fc.setFileFilter(new ExtensionFileFilter("xml", "XML Theme Document"));		int returnVal = fc.showOpenDialog(this);		if(returnVal == JFileChooser.APPROVE_OPTION){			fname = new String(fc.getSelectedFile().getAbsolutePath());			settings.loadFromFile(fname);			loadSettings(settings);		}	}		private void loadDefaultThemeMenuEvent(ActionEvent evt){		settings.loadFromFile("default.xml");		loadSettings(settings);	}		private void prefsMenuEvent(ActionEvent evt){		preferencesDialog pd = new preferencesDialog(this, settings);		pd.setVisible(true);		settings = pd.getSettings();		loadSettings(settings);	}		private void hintMenuEvent(ActionEvent evt){		solver.setGame(game);		SolvedSquare sq;		if((sq = solver.getHint()) != null){			panel.addToGame(sq.getValue(), sq.getIndex());		}else{			this.setStatus("Unable to provide hint");		}	}		private void solveAtOnceMenuEvent(ActionEvent evt){		if(game.checkFull()){			setStatus("Game already solved.");			return;		}		solver.setGame(game);		solver.solve();				Vector<SolvedSquare> ssv= solver.getSolvedSquares();		for(SolvedSquare sq: ssv){			panel.addToGame(sq.getValue(), sq.getIndex());		}				if(solver.isCompleted()){			String st = String.valueOf(solver.getTotalTimeMillis());			setStatus("Solution found in " + st + " ms");		}else{			setStatus("Failed to solve this sudoku.");		}	}		private void solveMenuEvent(ActionEvent evt){		if(!msp.isVisible())			showSolvePanelM.doClick();	}		private void aboutMenuEvent(ActionEvent evt){		AboutDialog aboutDialog;		aboutDialog = new AboutDialog(this, "About MUSoSu", version);		aboutDialog.setVisible(true);	}		// END OF EVENT HANDLING METHODS		/**	 * Sets the value of the message in the status bar. 	 * Possibly not needed	 */	private void setStatus(String message){		statusPanel.setStatusLabel(message);	}		private void createMenu(){		setJMenuBar(menuBar);                fileMenu = new JMenu("File");         viewMenu = new JMenu("View");        solverMenu = new JMenu("Game");        aboutMenu = new JMenu("Help");        newMenu = new JMenu("New");                menuBar.add(fileMenu);        menuBar.add(viewMenu);        menuBar.add(solverMenu);        menuBar.add(aboutMenu);                newCustomM = new JMenuItem();        newCustomM.setText("Custom Game");        newCustomM.addActionListener(this);                newM = new JMenuItem();        newM.setText("New Game...");        newM.addActionListener(this);        newM.setEnabled(true);                newMenu.add(newM);        newMenu.add(newCustomM);                openM = new JMenuItem();        openM.setText("Open Game...");        openM.addActionListener(this);                openPresetM = new JMenu();        openPresetM.setText("Open Preset Game");        preloadGames();        preMenuItems = new JMenuItem[preloaded.size()];        String tmpS, tmpN;           for(int i = 0; i < preloaded.size(); i++){        	preMenuItems[i] = new JMenuItem();        	tmpS = preloaded.get(i);        	tmpN = preloadedNames.get(i);        	        	preMenuItems[i].setText(tmpN);        	preMenuItems[i].setName(tmpS);        	preMenuItems[i].addActionListener(new ActionListener(){        		public void actionPerformed(ActionEvent evt){        			preloadMenuEvent(evt);        		}        	});        	openPresetM.add(preMenuItems[i]);        }                saveAsM =new JMenuItem();        saveAsM.setText("Save Game As...");        saveAsM.setEnabled(false);        saveAsM.addActionListener(this);                restartM = new JMenuItem();        restartM.setText("Restart Game");        restartM.setEnabled(false);        restartM.addActionListener(this);                closeM = new JMenuItem();        closeM.setText("Close Game");        closeM.setEnabled(false);        closeM.addActionListener(this);                printM = new JMenuItem();        printM.setText("Print Board...");        printM.setEnabled(false);        printM.addActionListener(this);                exitM = new JMenuItem();        exitM.setText("Exit");        exitM.addActionListener(this);                showSolvePanelM = new JCheckBoxMenuItem();        showSolvePanelM.setText("Show Solve Panel");        showSolvePanelM.setEnabled(false);        showSolvePanelM.addActionListener(new ActionListener(){        	public void actionPerformed(ActionEvent evt){        		JCheckBoxMenuItem tmp = (JCheckBoxMenuItem) evt.getSource();        		boolean b = tmp.getState();	        		if(b) showSolverPanel();        		else hideSolverPanel();        	}        });                showTraceM = new JCheckBoxMenuItem();        showTraceM.setText("Show Trace");        showTraceM.addChangeListener(new ChangeListener(){        	public void stateChanged(ChangeEvent evt){        		showTraceMenuEvent(evt);        	}        });                showTTM = new JCheckBoxMenuItem();        showTTM.setText("Show Possible Values");        showTTM.addChangeListener(new ChangeListener(){        	public void stateChanged(ChangeEvent evt){        		showTTMenuEvent(evt);        	}        });                clearMarksM = new JMenuItem();        clearMarksM.setText("Clear All Marks");        clearMarksM.addActionListener(this);                saveThemeM = new JMenuItem();        saveThemeM.setText("Save Current Settings...");        saveThemeM.addActionListener(this);                saveDefaultM = new JMenuItem();        saveDefaultM.setText("Save Current Settings as Default");        saveDefaultM.addActionListener(this);                loadThemeM = new JMenuItem();        loadThemeM.setText("Load Settings...");        loadThemeM.addActionListener(this);                loadDefaultThemeM = new JMenuItem();        loadDefaultThemeM.setText("Load Default Settings");        loadDefaultThemeM.addActionListener(this);                prefsM = new JMenuItem();        prefsM.setText("Preferences...");        prefsM.addActionListener(this);                undoM = new JMenuItem();        undoM.setText("Undo (Ctrl-Z)");        undoM.addActionListener(this);                redoM = new JMenuItem();        redoM.setText("Redo (Ctrl-R)");        redoM.addActionListener(this);                solveAtOnceM = new JMenuItem();        solveAtOnceM.setText("Solve At Once");        solveAtOnceM.setEnabled(false);        solveAtOnceM.addActionListener(this);                solveM = new JMenuItem();        solveM.setText("Solve...");        solveM.setEnabled(false);        solveM.addActionListener(this);                hintM = new JMenuItem();        hintM.setText("Hint");        hintM.setEnabled(false);        hintM.addActionListener(this);                aboutM = new JMenuItem();        aboutM.setText("About...");        aboutM.addActionListener(this);        fileMenu.add(newMenu);        fileMenu.add(openM);        fileMenu.add(openPresetM);        fileMenu.addSeparator();        fileMenu.add(restartM);        fileMenu.add(closeM);        fileMenu.addSeparator();        fileMenu.add(saveAsM);        fileMenu.addSeparator();        fileMenu.add(printM);        fileMenu.addSeparator();        fileMenu.add(exitM);        viewMenu.add(showSolvePanelM);        viewMenu.add(showTraceM);        viewMenu.add(showTTM);        viewMenu.addSeparator();        viewMenu.add(clearMarksM);        viewMenu.addSeparator();        viewMenu.add(loadThemeM);        viewMenu.add(loadDefaultThemeM);        viewMenu.add(saveThemeM);        viewMenu.add(saveDefaultM);        viewMenu.addSeparator();        viewMenu.add(prefsM);        solverMenu.add(undoM);        solverMenu.add(redoM);        solverMenu.addSeparator();        solverMenu.add(hintM);        solverMenu.addSeparator();        solverMenu.add(solveAtOnceM);        solverMenu.add(solveM);        aboutMenu.add(aboutM);	}		/**	 * Initializes all visual components, adds Listeners,	 * creates Menus, etc.	 * This method is called by the Constructor only.	 *	 */	private void initComponents(){		//this.setPreferredSize(new Dimension(350,400));		this.setPreferredSize(new Dimension(390, 440));		label = new JLabel(".:: MUSoSu ::.");		label.setFont(new Font("Courier", Font.BOLD, 24));    	label.setForeground(Color.orange);		        titlePanel = new JPanel();    	titlePanel.setLayout(new BorderLayout());    	titlePanel.setBackground(Color.DARK_GRAY);    	titlePanel.add(label, BorderLayout.EAST);    	newCustomPanel = new JPanel();    	newCustomPanel.setLayout(new BorderLayout(1, 1));    	    	JPanel butPan = new JPanel();    	getStr = new JButton("Get String");    	getStr.setBackground(Color.WHITE);    	getStr.addActionListener(this);    	getStr.setMargin(new Insets(1,1,1,1));    	save = new JButton("Save");     	save.setBackground(Color.WHITE);    	save.addActionListener(this);    	save.setMargin(new Insets(1,1,1,1));    	savenopen = new JButton("Save and Play"); savenopen.setBackground(Color.WHITE);    	savenopen.addActionListener(this);    	savenopen.setMargin(new Insets(1,1,1,1));    	cancel = new JButton("Cancel"); cancel.setBackground(Color.WHITE);    	cancel.addActionListener(this);    	cancel.setMargin(new Insets(1,1,1,1));    	butPan.add(getStr);    	butPan.add(save);    	butPan.add(savenopen);     	butPan.add(cancel);    	butPan.setVisible(true);    	newCustomPanel.add(butPan, BorderLayout.EAST);    	newCustomPanel.setVisible(false);    	statusPanel = new MStatusPanel(); // I know it's duplicated but GamePanel() needs it    	    	middle = new JPanel();		middle.setLayout(new BorderLayout());    	panel = new GamePanel(statusPanel);		panel.setVisible(false);		msp = new MSolvePanel(panel);   // for the solver panel										// more initialisation in showSolverPanel()		msp.setVisible(false);		middle.add(msp, BorderLayout.EAST);		middle.add(panel, BorderLayout.CENTER);				//		statusPanel = new MStatusPanel();    	statusPanel.setVisible(true);    	    	southPanel = new JPanel();    	southPanel.setLayout(new BorderLayout());    	southPanel.add(newCustomPanel, BorderLayout.NORTH);    	southPanel.add(statusPanel, BorderLayout.CENTER);    	southPanel.setVisible(true);    			//		    	superPanel = new JPanel();        superPanel.setLayout(new BorderLayout());        superPanel.add(titlePanel, BorderLayout.NORTH);        superPanel.add(middle, BorderLayout.CENTER);        superPanel.add(southPanel, BorderLayout.SOUTH);               getContentPane().add(superPanel); }		/**	 * Method to load on preloadedNames and preloaded	 * the hardcoded games	 */	private void preloadGames(){		preloaded = new Vector<String>();		preloadedNames = new Vector<String>();		String n = new String();		String s = new String();		n = "Very Easy - 1";		s = "870000015903040706060108020006405200040000050005901600020304090108090504450000062";		preloadedNames.add(n);		preloaded.add(s);				n = "Medium - 1";		s = "040203000050000093008000700700304009000000000900506008004000900260000040000109080";		preloadedNames.add(n);		preloaded.add(s);				n = "Medium - 2";		s = "00300040000030800079000001801020306000004000002060507038000002700090700000200090";		preloadedNames.add(n);		preloaded.add(s);				n = "Hard - 1";		s = "000050070207800600010040050000000030406000105020000000040030010003006908060080000";		preloadedNames.add(n);		preloaded.add(s);				n = "Very Hard - 1";		s = "00090400000406020003000008020030500609000001010060700805000009000102030000080900";		preloadedNames.add(n);		preloaded.add(s);				n = "Very Hard - 2";		s = "060000010500406003000503000021000650000000000053000840000102000200705009090000080";		preloadedNames.add(n);		preloaded.add(s);				n = "Very Hard - 3";		s = "500009004002000800100403006907000400000080000001000203700604009005000700400100002";		preloadedNames.add(n);		preloaded.add(s);	}		private void showSolverPanel(){		msp.setSudoku(game);		msp.setVisible(true);		if(!((this.getState() & JFrame.MAXIMIZED_BOTH) == JFrame.MAXIMIZED_BOTH)){			setSize(new Dimension(this.getSize().width + 200, this.getSize().height));		}		this.validateTree();	}		private void hideSolverPanel(){		msp.setVisible(false);		if(!((this.getState() & JFrame.MAXIMIZED_BOTH) == JFrame.MAXIMIZED_BOTH)){			setSize(new Dimension(this.getSize().width - 200, this.getSize().height));		}	}		private void getStrEvent(){		String str = game.getString();		GetStrDialog getStrDlg = new GetStrDialog(this, str);		getStrDlg.setVisible(true);	}	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -