Fixed instantiation where a new MouseListener was used to each tile - now only one is used for all Tiles. Fixed issue where the MouseListener was being added to each tile twice.
97 lines
2.6 KiB
Java
97 lines
2.6 KiB
Java
package view;
|
|
|
|
import java.awt.BorderLayout;
|
|
|
|
import javax.swing.Box;
|
|
import javax.swing.BoxLayout;
|
|
import javax.swing.JFrame;
|
|
import javax.swing.JPanel;
|
|
|
|
import model.Referee;
|
|
|
|
public class MainFrame extends JFrame {
|
|
|
|
private static final long serialVersionUID = 1L;
|
|
|
|
private final Referee referee;
|
|
|
|
public static void main(String[] args) {
|
|
MainFrame mainFrame = new MainFrame();
|
|
mainFrame.playGame();
|
|
}
|
|
|
|
|
|
public MainFrame() {
|
|
super("CS8803 Project 4");
|
|
referee = new Referee();
|
|
|
|
init();
|
|
|
|
setDefaultCloseOperation(MainFrame.EXIT_ON_CLOSE);
|
|
|
|
setVisible(true);
|
|
pack();
|
|
}
|
|
|
|
private void init() {
|
|
ScorePanel sp = new ScorePanel(referee);
|
|
TileSelectionPanel tp = new TileSelectionPanel(referee.getHumanPlayer());
|
|
|
|
BoardPanel bp = new BoardPanel(referee,tp);
|
|
referee.setBoardPanel(bp);
|
|
|
|
MessagePanel mp = new MessagePanel(referee);
|
|
referee.setMessagePanel(mp);
|
|
|
|
//The outer wrapper allows the game board to be resized vertically.
|
|
JPanel vWrapper = new JPanel();
|
|
vWrapper.setLayout(new BoxLayout(vWrapper,BoxLayout.Y_AXIS));
|
|
|
|
//The inner wrappers allow each sub-panel to be independently resized horizontally.
|
|
JPanel hWrapperTop = new JPanel();
|
|
hWrapperTop.setLayout(new BoxLayout(hWrapperTop,BoxLayout.X_AXIS));
|
|
JPanel hWrapperMid = new JPanel();
|
|
hWrapperMid.setLayout(new BoxLayout(hWrapperMid,BoxLayout.X_AXIS));
|
|
JPanel hWrapperBottom = new JPanel();
|
|
hWrapperBottom.setLayout(new BorderLayout());
|
|
|
|
//Top horizontal-box wrapper contains message panel, score panel
|
|
hWrapperTop.add(Box.createHorizontalGlue());
|
|
hWrapperTop.add(mp);
|
|
hWrapperTop.add(sp);
|
|
hWrapperTop.add(Box.createHorizontalGlue());
|
|
|
|
//Mid horizontal box wrapper contains board panel
|
|
hWrapperMid.add(Box.createHorizontalGlue());
|
|
|
|
JPanel bpContainer = new JPanel();
|
|
bpContainer.add(bp);
|
|
hWrapperMid.add(bpContainer);
|
|
hWrapperMid.add(Box.createHorizontalGlue());
|
|
|
|
//Bottom horizontal box wrapper contains tile panel
|
|
hWrapperBottom.add(tp,BorderLayout.NORTH);
|
|
|
|
//the outter wrapper contains the 3 inner wrappers: top, mid, bottom
|
|
vWrapper.add(hWrapperTop);
|
|
vWrapper.add(hWrapperMid);
|
|
vWrapper.add(hWrapperBottom);
|
|
|
|
//The main JFrame contains a the outer (vertical) wrapper, in the center of a BorderLayout.
|
|
setLayout(new BorderLayout());
|
|
add(vWrapper,BorderLayout.CENTER);
|
|
|
|
//To ensure correct size, pre-populate the score and message panels with text.
|
|
sp.updateScore();
|
|
mp.updateMessage("Loading new game...");
|
|
|
|
pack();
|
|
|
|
//Finally, update the border to show the initially selected tile color.
|
|
tp.updateBorders();
|
|
}
|
|
|
|
private void playGame() {
|
|
new Thread(referee).start();
|
|
}
|
|
} |