diff --git a/src/dev/kske/minesweeper/CustomDialog.java b/src/dev/kske/minesweeper/CustomDialog.java index e2df3cc..4c7fe92 100644 --- a/src/dev/kske/minesweeper/CustomDialog.java +++ b/src/dev/kske/minesweeper/CustomDialog.java @@ -2,10 +2,15 @@ package dev.kske.minesweeper; import java.awt.BorderLayout; import java.awt.FlowLayout; +import java.awt.Font; +import java.awt.Frame; +import java.awt.GridLayout; import javax.swing.JButton; import javax.swing.JDialog; +import javax.swing.JLabel; import javax.swing.JPanel; +import javax.swing.JSlider; import javax.swing.border.EmptyBorder; @@ -20,34 +25,72 @@ public class CustomDialog extends JDialog { private static final long serialVersionUID = -4019516811065781434L; 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. */ - public CustomDialog() { + public CustomDialog(Frame owner) { + super(owner, ModalityType.APPLICATION_MODAL); + setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); + setBounds(100, 100, 450, 300); getContentPane().setLayout(new BorderLayout()); - mcontentPanel.setLayout(new FlowLayout()); mcontentPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); 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(); buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT)); getContentPane().add(buttonPane, BorderLayout.SOUTH); { - JButton okButton = new JButton("OK"); + JButton okButton = new JButton("Start Game"); okButton.setActionCommand("OK"); buttonPane.add(okButton); getRootPane().setDefaultButton(okButton); @@ -58,6 +101,7 @@ public class CustomDialog extends JDialog { buttonPane.add(cancelButton); } } + setVisible(true); } } diff --git a/src/dev/kske/minesweeper/Minesweeper.java b/src/dev/kske/minesweeper/Minesweeper.java index 8f30a5a..e319e83 100644 --- a/src/dev/kske/minesweeper/Minesweeper.java +++ b/src/dev/kske/minesweeper/Minesweeper.java @@ -14,6 +14,7 @@ import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.SwingConstants; +import javax.swing.UIManager; /** * Project: Minesweeper
@@ -59,6 +60,12 @@ public class Minesweeper { * Initialize the contents of the frame. */ private void initialize() { + try { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + } catch (Exception ex) { + ex.printStackTrace(); + } + mframe = new JFrame(); mframe.setResizable(false); mframe.setTitle("Minesweeper"); @@ -127,6 +134,10 @@ public class Minesweeper { easyMenuItem.addActionListener((evt) -> initGame(easyConfig)); mediumMenuItem.addActionListener((evt) -> initGame(mediumConfig)); hardMenuItem.addActionListener((evt) -> initGame(hardConfig)); + customMenuItem.addActionListener((evt) -> { + var dlg = new CustomDialog(mframe); + + }); aboutMenuItem.addActionListener((evt) -> { JOptionPane.showMessageDialog(board, "Minesweeper version " + VERSION + "\nby Kai S. K. Engelbart"); });