diff --git a/src/dev/kske/minesweeper/CustomDialog.java b/src/dev/kske/minesweeper/CustomDialog.java
index e284f58..328cd22 100644
--- a/src/dev/kske/minesweeper/CustomDialog.java
+++ b/src/dev/kske/minesweeper/CustomDialog.java
@@ -13,7 +13,6 @@ import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.border.EmptyBorder;
-
/**
* Project: Minesweeper
* File: CustomDialog.java
@@ -23,8 +22,9 @@ import javax.swing.border.EmptyBorder;
public class CustomDialog extends JDialog {
private static final long serialVersionUID = -4019516811065781434L;
- private final JPanel mcontentPanel = new JPanel();
- private final JSlider sliderBoardWidth, sliderBoardHeight, sliderNumMines;
+ private final JPanel mcontentPanel = new JPanel();
+
+ private BoardConfig result;
/**
* Create the dialog.
@@ -43,13 +43,11 @@ public class CustomDialog extends JDialog {
lblBoardWidth.setFont(new Font("Tahoma", Font.PLAIN, 14));
mcontentPanel.add(lblBoardWidth);
}
- {
- sliderBoardWidth = new JSlider();
- sliderBoardWidth.setValue(16);
- sliderBoardWidth.setMinimum(2);
- sliderBoardWidth.setMaximum(30);
- mcontentPanel.add(sliderBoardWidth);
- }
+ JSlider sliderBoardWidth = new JSlider();
+ sliderBoardWidth.setValue(16);
+ sliderBoardWidth.setMinimum(2);
+ sliderBoardWidth.setMaximum(30);
+ mcontentPanel.add(sliderBoardWidth);
{
JLabel label = new JLabel("");
mcontentPanel.add(label);
@@ -59,13 +57,11 @@ public class CustomDialog extends JDialog {
lblBoardHeight.setFont(new Font("Tahoma", Font.PLAIN, 14));
mcontentPanel.add(lblBoardHeight);
}
- {
- sliderBoardHeight = new JSlider();
- sliderBoardHeight.setValue(16);
- sliderBoardHeight.setMaximum(30);
- sliderBoardHeight.setMinimum(2);
- mcontentPanel.add(sliderBoardHeight);
- }
+ JSlider sliderBoardHeight = new JSlider();
+ sliderBoardHeight.setValue(16);
+ sliderBoardHeight.setMaximum(30);
+ sliderBoardHeight.setMinimum(2);
+ mcontentPanel.add(sliderBoardHeight);
{
JLabel label = new JLabel("");
mcontentPanel.add(label);
@@ -75,13 +71,11 @@ public class CustomDialog extends JDialog {
lblNumberOfMines.setFont(new Font("Tahoma", Font.PLAIN, 14));
mcontentPanel.add(lblNumberOfMines);
}
- {
- sliderNumMines = new JSlider();
- sliderNumMines.setValue(16);
- sliderNumMines.setMinimum(2);
- sliderNumMines.setMaximum(200);
- mcontentPanel.add(sliderNumMines);
- }
+ JSlider sliderNumMines = new JSlider();
+ sliderNumMines.setValue(16);
+ sliderNumMines.setMinimum(2);
+ sliderNumMines.setMaximum(200);
+ mcontentPanel.add(sliderNumMines);
{
JLabel label = new JLabel("");
mcontentPanel.add(label);
@@ -93,6 +87,11 @@ public class CustomDialog extends JDialog {
{
JButton okButton = new JButton("Start Game");
okButton.setActionCommand("OK");
+ okButton.addActionListener((evt) -> {
+ result = new BoardConfig(sliderBoardWidth.getValue(), sliderBoardHeight.getValue(),
+ sliderNumMines.getValue());
+ dispose();
+ });
buttonPane.add(okButton);
getRootPane().setDefaultButton(okButton);
}
@@ -103,9 +102,10 @@ public class CustomDialog extends JDialog {
buttonPane.add(cancelButton);
}
}
- setVisible(true);
}
- public BoardConfig getBoardConfig() {
- return new BoardConfig(sliderBoardWidth.getValue(), sliderBoardHeight.getValue(), sliderNumMines.getValue());
+
+ public BoardConfig showDialog() {
+ setVisible(true);
+ return result;
}
}
diff --git a/src/dev/kske/minesweeper/Minesweeper.java b/src/dev/kske/minesweeper/Minesweeper.java
index 242a929..9c2af9d 100644
--- a/src/dev/kske/minesweeper/Minesweeper.java
+++ b/src/dev/kske/minesweeper/Minesweeper.java
@@ -133,6 +133,10 @@ public class Minesweeper {
easyMenuItem.addActionListener((evt) -> initGame(easyConfig));
mediumMenuItem.addActionListener((evt) -> initGame(mediumConfig));
hardMenuItem.addActionListener((evt) -> initGame(hardConfig));
+ customMenuItem.addActionListener((evt) -> {
+ BoardConfig cfg = new CustomDialog(mframe).showDialog();
+ if (cfg != null) initGame(cfg);
+ });
aboutMenuItem.addActionListener((evt) -> {
JOptionPane.showMessageDialog(board, "Minesweeper version " + VERSION + "\nby Kai S. K. Engelbart");
});