Memory-Game/GridDialog.java
2019-08-19 17:22:45 -06:00

111 lines
3.4 KiB
Java

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GridDialog {
private JDialog dialog = new JDialog();
private JTextField name1 = new JTextField("Player 1"), name2 = new JTextField("Player 2");
private SpinnerModel cards = new SpinnerNumberModel(12, 6, 100, 2);
private JSpinner numCards = new JSpinner(cards);
public GridDialog(String str1, String str2, int cards) {
name1.setText(str1);
name2.setText(str2);
numCards.setValue(cards);
createDialog();
}
public GridDialog() {
/*try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}*/
createDialog();
}
public void createDialog() {
dialog.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.BOTH;
c.gridy = 0;
c.gridwidth = 2;
c.weightx = 1;
c.weighty = 1;
c.insets = new Insets(2, 5, 10, 5);
JLabel title = new JLabel("Board Size Picker", JLabel.CENTER);
title.setFont(new Font(title.getFont().getName(), Font.BOLD, title.getFont().getSize() + 2));
dialog.add(title, c);
c.gridy = 1;
c.gridwidth = 1;
c.insets = new Insets(2, 5, 2, 5);
dialog.add(new JLabel("Name 1:", JLabel.RIGHT), c);
dialog.add(name1, c);
c.gridy = 2;
dialog.add(new JLabel("Name 2:", JLabel.RIGHT), c);
dialog.add(name2, c);
c.gridy = 3;
dialog.add(new JLabel("# of Cards:", JLabel.RIGHT), c);
dialog.add(numCards, c);
c.gridy = 4;
JButton okButton = new JButton("Ok");
okButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new Main(name1.getText(), name2.getText(), factor((Integer)numCards.getValue())[0], factor((Integer)numCards.getValue())[1]);
dialog.dispose();
}
});
dialog.add(okButton, c);
c.gridx = 1;
JButton cancelButton = new JButton("Cancel");
cancelButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dialog.dispose();
}
});
dialog.add(cancelButton, c);
dialog.pack();
dialog.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
dialog.setVisible(true);
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
dialog.setLocation(dim.width/2-dialog.getSize().width/2, dim.height/2-dialog.getSize().height/2);
}
private int[] factor(int num) {
double fac1 = 1, fac2;
double lowest = num;
int ans[] = {0, 0};
while(fac1 <= Math.sqrt(num)) {
fac2 = num/fac1;
if (trunc(fac2) == fac2) {
if ((fac1 + fac2) < lowest) {
lowest = fac1 + fac2;
ans[0] = (int)fac1;
ans[1] = (int)fac2;
}
}
fac1++;
}
return ans;
}
public static double trunc(double d) {
return ((long)(d * 1)) / 1;
}
}