111 lines
3.4 KiB
Java
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;
|
|
}
|
|
}
|