Working on custom game options dialog
This commit is contained in:
		| @@ -2,10 +2,15 @@ package dev.kske.minesweeper; | |||||||
|  |  | ||||||
| import java.awt.BorderLayout; | import java.awt.BorderLayout; | ||||||
| import java.awt.FlowLayout; | import java.awt.FlowLayout; | ||||||
|  | import java.awt.Font; | ||||||
|  | import java.awt.Frame; | ||||||
|  | import java.awt.GridLayout; | ||||||
|  |  | ||||||
| import javax.swing.JButton; | import javax.swing.JButton; | ||||||
| import javax.swing.JDialog; | import javax.swing.JDialog; | ||||||
|  | import javax.swing.JLabel; | ||||||
| import javax.swing.JPanel; | import javax.swing.JPanel; | ||||||
|  | import javax.swing.JSlider; | ||||||
| import javax.swing.border.EmptyBorder; | import javax.swing.border.EmptyBorder; | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -20,34 +25,72 @@ public class CustomDialog extends JDialog { | |||||||
| 	private static final long	serialVersionUID	= -4019516811065781434L; | 	private static final long	serialVersionUID	= -4019516811065781434L; | ||||||
| 	private final JPanel mcontentPanel = new JPanel(); | 	private final JPanel mcontentPanel = new JPanel(); | ||||||
|  |  | ||||||
| 	/** |  | ||||||
| 	 * Launch the application. |  | ||||||
| 	 */ |  | ||||||
| 	public static void main(String[] args) { |  | ||||||
| 		try { |  | ||||||
| 			CustomDialog dialog = new CustomDialog(); |  | ||||||
| 			dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); |  | ||||||
| 			dialog.setVisible(true); |  | ||||||
| 		} catch (Exception e) { |  | ||||||
| 			e.printStackTrace(); |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	/** | 	/** | ||||||
| 	 * Create the dialog. | 	 * Create the dialog. | ||||||
| 	 */ | 	 */ | ||||||
| 	public CustomDialog() { | 	public CustomDialog(Frame owner) { | ||||||
|  | 		super(owner, ModalityType.APPLICATION_MODAL); | ||||||
|  | 		setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); | ||||||
|  |  | ||||||
| 		setBounds(100, 100, 450, 300); | 		setBounds(100, 100, 450, 300); | ||||||
| 		getContentPane().setLayout(new BorderLayout()); | 		getContentPane().setLayout(new BorderLayout()); | ||||||
| 		mcontentPanel.setLayout(new FlowLayout()); |  | ||||||
| 		mcontentPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); | 		mcontentPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); | ||||||
| 		getContentPane().add(mcontentPanel, BorderLayout.CENTER); | 		getContentPane().add(mcontentPanel, BorderLayout.CENTER); | ||||||
|  | 		mcontentPanel.setLayout(new GridLayout(0, 3, 0, 0)); | ||||||
|  | 		{ | ||||||
|  | 			JLabel lblBoardWidth = new JLabel("Board Width:"); | ||||||
|  | 			lblBoardWidth.setFont(new Font("Tahoma", Font.PLAIN, 14)); | ||||||
|  | 			mcontentPanel.add(lblBoardWidth); | ||||||
|  | 		} | ||||||
|  | 		{ | ||||||
|  | 			JSlider sliderBoardWidth = new JSlider(); | ||||||
|  | 			sliderBoardWidth.setValue(16); | ||||||
|  | 			sliderBoardWidth.setMinimum(2); | ||||||
|  | 			sliderBoardWidth.setMaximum(30); | ||||||
|  | 			mcontentPanel.add(sliderBoardWidth); | ||||||
|  | 		} | ||||||
|  | 		{ | ||||||
|  | 			JLabel label = new JLabel(""); | ||||||
|  | 			mcontentPanel.add(label); | ||||||
|  | 		} | ||||||
|  | 		{ | ||||||
|  | 			JLabel lblBoardHeight = new JLabel("Board Height:"); | ||||||
|  | 			lblBoardHeight.setFont(new Font("Tahoma", Font.PLAIN, 14)); | ||||||
|  | 			mcontentPanel.add(lblBoardHeight); | ||||||
|  | 		} | ||||||
|  | 		{ | ||||||
|  | 			JSlider sliderBoardHeight = new JSlider(); | ||||||
|  | 			sliderBoardHeight.setValue(16); | ||||||
|  | 			sliderBoardHeight.setMaximum(30); | ||||||
|  | 			sliderBoardHeight.setMinimum(2); | ||||||
|  | 			mcontentPanel.add(sliderBoardHeight); | ||||||
|  | 		} | ||||||
|  | 		{ | ||||||
|  | 			JLabel label = new JLabel(""); | ||||||
|  | 			mcontentPanel.add(label); | ||||||
|  | 		} | ||||||
|  | 		{ | ||||||
|  | 			JLabel lblNumberOfMines = new JLabel("Number of Mines:"); | ||||||
|  | 			lblNumberOfMines.setFont(new Font("Tahoma", Font.PLAIN, 14)); | ||||||
|  | 			mcontentPanel.add(lblNumberOfMines); | ||||||
|  | 		} | ||||||
|  | 		{ | ||||||
|  | 			JSlider slider = new JSlider(); | ||||||
|  | 			slider.setValue(16); | ||||||
|  | 			slider.setMinimum(2); | ||||||
|  | 			slider.setMaximum(200); | ||||||
|  | 			mcontentPanel.add(slider); | ||||||
|  | 		} | ||||||
|  | 		{ | ||||||
|  | 			JLabel label = new JLabel(""); | ||||||
|  | 			mcontentPanel.add(label); | ||||||
|  | 		} | ||||||
| 		{ | 		{ | ||||||
| 			JPanel buttonPane = new JPanel(); | 			JPanel buttonPane = new JPanel(); | ||||||
| 			buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT)); | 			buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT)); | ||||||
| 			getContentPane().add(buttonPane, BorderLayout.SOUTH); | 			getContentPane().add(buttonPane, BorderLayout.SOUTH); | ||||||
| 			{ | 			{ | ||||||
| 				JButton okButton = new JButton("OK"); | 				JButton okButton = new JButton("Start Game"); | ||||||
| 				okButton.setActionCommand("OK"); | 				okButton.setActionCommand("OK"); | ||||||
| 				buttonPane.add(okButton); | 				buttonPane.add(okButton); | ||||||
| 				getRootPane().setDefaultButton(okButton); | 				getRootPane().setDefaultButton(okButton); | ||||||
| @@ -58,6 +101,7 @@ public class CustomDialog extends JDialog { | |||||||
| 				buttonPane.add(cancelButton); | 				buttonPane.add(cancelButton); | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
|  | 		setVisible(true); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -14,6 +14,7 @@ import javax.swing.JMenuItem; | |||||||
| import javax.swing.JOptionPane; | import javax.swing.JOptionPane; | ||||||
| import javax.swing.JPanel; | import javax.swing.JPanel; | ||||||
| import javax.swing.SwingConstants; | import javax.swing.SwingConstants; | ||||||
|  | import javax.swing.UIManager; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * Project: <strong>Minesweeper</strong><br> |  * Project: <strong>Minesweeper</strong><br> | ||||||
| @@ -59,6 +60,12 @@ public class Minesweeper { | |||||||
| 	 * Initialize the contents of the frame. | 	 * Initialize the contents of the frame. | ||||||
| 	 */ | 	 */ | ||||||
| 	private void initialize() { | 	private void initialize() { | ||||||
|  | 		try { | ||||||
|  | 			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); | ||||||
|  | 		} catch (Exception ex) { | ||||||
|  | 			ex.printStackTrace(); | ||||||
|  | 		} | ||||||
|  |  | ||||||
| 		mframe = new JFrame(); | 		mframe = new JFrame(); | ||||||
| 		mframe.setResizable(false); | 		mframe.setResizable(false); | ||||||
| 		mframe.setTitle("Minesweeper"); | 		mframe.setTitle("Minesweeper"); | ||||||
| @@ -127,6 +134,10 @@ public class Minesweeper { | |||||||
| 		easyMenuItem.addActionListener((evt) -> initGame(easyConfig)); | 		easyMenuItem.addActionListener((evt) -> initGame(easyConfig)); | ||||||
| 		mediumMenuItem.addActionListener((evt) -> initGame(mediumConfig)); | 		mediumMenuItem.addActionListener((evt) -> initGame(mediumConfig)); | ||||||
| 		hardMenuItem.addActionListener((evt) -> initGame(hardConfig)); | 		hardMenuItem.addActionListener((evt) -> initGame(hardConfig)); | ||||||
|  | 		customMenuItem.addActionListener((evt) -> { | ||||||
|  | 			var dlg = new CustomDialog(mframe); | ||||||
|  |  | ||||||
|  | 		}); | ||||||
| 		aboutMenuItem.addActionListener((evt) -> { | 		aboutMenuItem.addActionListener((evt) -> { | ||||||
| 			JOptionPane.showMessageDialog(board, "Minesweeper version " + VERSION + "\nby Kai S. K. Engelbart"); | 			JOptionPane.showMessageDialog(board, "Minesweeper version " + VERSION + "\nby Kai S. K. Engelbart"); | ||||||
| 		}); | 		}); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user