📄 increment1frame.java
字号:
// Yura Mamyrin, Group D
package risk.ui.Increment1GUI;
import risk.engine.*;
import risk.engine.guishared.AboutDialog;
import javax.swing.JFrame;
import java.awt.event.WindowEvent;
import java.awt.Dimension;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import java.awt.Rectangle;
import javax.swing.JLabel;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JFileChooser;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.UIManager;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import javax.swing.JOptionPane;
import java.io.FileWriter;
import java.io.BufferedWriter;
import java.io.PrintWriter;
import java.awt.Color;
import java.awt.GridBagConstraints;
import javax.swing.JButton;
import javax.swing.JTextField;
import javax.swing.JRootPane;
import java.awt.Image;
import java.util.Vector;
import java.awt.event.KeyEvent;
import java.awt.event.KeyAdapter;
import java.io.File;
import java.awt.image.BufferedImage;
/**
* <p> Increment1 GUI </p>
* @author Yura Mamyrin
*/
public class Increment1Frame extends JFrame {
private final static String version = "1.1.1.1";
private final static String product = "Increment1 GUI for RISK";
private BorderLayout layout;
private JTextArea Console;
private JTextArea Testing;
private JTextField Command;
private JButton Submit;
private JLabel Pix;
private JLabel statusBar;
private JScrollPane Con;
private JScrollPane Log;
private JLabel logLabel;
private Risk risk;
private Vector history;
private int pointer;
private String temptext;
/** Creates new form JFrame */
/**
* Creates a new RiskGUI
* @param r The Risk object for this GUI
*/
public Increment1Frame(Risk r) {
risk = r;
risk.addRiskListener( new Increment1RiskAdapter() );
history = new Vector();
pointer=-1;
/* * UIManager used to be here * */
// layout = new BorderLayout();
Console = new JTextArea();
Testing = new JTextArea();
Command = new JTextField();
Submit = new JButton();
Pix = new JLabel(new javax.swing.ImageIcon( this.getClass().getResource("map.png") ));
statusBar = new JLabel("Loading...");
Con = new JScrollPane(Console);
Log = new JScrollPane(Testing);
logLabel = new JLabel("Test Log");
initGUI();
setIconImage(Toolkit.getDefaultToolkit().getImage( AboutDialog.class.getResource("icon.gif") ));
// setSize(910,675); // (860, 670) // 580
setResizable(false);
Testing.append("creating GUI...\n");
//Center the frame on screen
//Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
//Dimension frameSize = getSize();
//frameSize.height = ((frameSize.height > screenSize.height) ? screenSize.height : frameSize.height);
//frameSize.width = ((frameSize.width > screenSize.width) ? screenSize.width : frameSize.width);
//setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
pack();
//setVisible(true);
Testing.append("Program loaded\n");
statusBar.setText("Ready");
}
/** This method is called from within the constructor to initialize the form. */
/**
* Initialises the GUI
*/
private void initGUI() {
getContentPane().setLayout(new java.awt.GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
// set title
setTitle(product);
// set the border of the window
//setDefaultLookAndFeelDecorated(true);
//setUndecorated(true);
//getRootPane().setWindowDecorationStyle(JRootPane.FRAME);
//Testing.setBounds(new java.awt.Rectangle(1,1,53,16));
// getContentPane().setLayout(layout);
// JPanel content = new JPanel();
// content.setPreferredSize(new Dimension(300, 200));
// content.setLayout(new java.awt.GridBagLayout());
c.insets = new java.awt.Insets(3, 3, 3, 3);
c.fill = GridBagConstraints.BOTH;
Console.setText("");
// Console.setBackground(Color.white); // not needed with swing
Console.setEditable(false);
// Testing.setColumns(20); // the one (causes odd problems)
Testing.setEditable(false);
Log.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
Log.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
Log.setPreferredSize(new java.awt.Dimension(200,550));
Log.setMinimumSize(new java.awt.Dimension(200,550));
Con.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
Con.setPreferredSize(new java.awt.Dimension(677,150));
Con.setMinimumSize(new java.awt.Dimension(677,150));
// c.ipadx = 600; // width
// c.ipadx = 0; // width
Command.setPreferredSize(new java.awt.Dimension(600,20));
Command.setMinimumSize(new java.awt.Dimension(600,20));
Command.setMaximumSize(new java.awt.Dimension(600,20));
// Command.setColumns(75); // dont use because it goes odd in linux
Submit.setText(" Submit ");
c.gridx = 0; // col
c.gridy = 0; // row
c.gridwidth = 2; // width
c.gridheight = 2; // height
getContentPane().add(Pix, c);
c.gridx = 1; // col
c.gridy = 3; // row
c.gridwidth = 1; // width
c.gridheight = 1; // height
getContentPane().add(Submit, c);
c.gridx = 2; // col
c.gridy = 0; // row
c.gridwidth = 1; // width
c.gridheight = 1; // height
getContentPane().add(logLabel, c);
// c.ipadx = 700; // width
// c.ipady = 140; // height
c.gridx = 0; // col
c.gridy = 2; // row
c.gridwidth = 2; // width
c.gridheight = 1; // height
getContentPane().add(Con, c);
// c.ipadx = 600; // width
// c.ipady = 0; // height
c.gridx = 0; // col
c.gridy = 3; // row
c.gridwidth = 1; // width
c.gridheight = 1; // height
getContentPane().add(Command, c);
// c.ipadx = 60; // width
// c.ipady = 300; // 570 height
c.gridx = 2; // col
c.gridy = 1; // row
c.gridwidth = 1; // width
c.gridheight = 3; // height
getContentPane().add(Log, c);
// c.ipadx = 0; // width
// c.ipady = 0; // height
//c.gridx = 0; // col
//c.gridy = 4; // row
//c.gridwidth = 2; // width
//c.gridheight = 1; // height
// add status bar
//getContentPane().add(gameStatus, c);
c.gridx = 0; // col
c.gridy = 4; // row
c.gridwidth = 3; // width
c.gridheight = 1; // height
// add status bar
getContentPane().add(statusBar, c);
ActionListener readCommand = new ActionListener() {
public void actionPerformed(ActionEvent a) {
//Submit.setEnabled(false);
//Command.setEnabled(false);
//statusBar.setText("Working...");
String input = Command.getText();
Command.setText("");
history.add(input);
pointer = history.size()-1;
go(input);
//Submit.setEnabled(true);
//Command.setEnabled(true);
Command.requestFocus();
//statusBar.setText("Done... Ready");
}
};
Submit.addActionListener( readCommand );
Command.addActionListener( readCommand );
class CommandKeyAdapter extends KeyAdapter {
Increment1Frame adaptee;
CommandKeyAdapter(Increment1Frame adaptee) {
this.adaptee = adaptee;
}
public void keyPressed(KeyEvent key) {
if (key.getKeyCode() == 38) {
Testing.append("up key (history)\n");
if (pointer < 0) {
Toolkit.getDefaultToolkit().beep();
}
else {
if (pointer == history.size()-1) { temptext=Command.getText(); }
Command.setText( (String)history.elementAt(pointer) );
pointer--;
}
}
else if(key.getKeyCode() == 40) {
Testing.append("down key (history)\n");
if (pointer > history.size()-2 ) {
Toolkit.getDefaultToolkit().beep();
}
else if (pointer == history.size()-2 ) {
Command.setText(temptext);
pointer++;
}
else {
pointer=pointer+2;
Command.setText( (String)history.elementAt(pointer) );
pointer--;
}
}
else {
pointer = history.size()-1;
}
}
}
Command.addKeyListener( new CommandKeyAdapter(this) );
// add menu bar
JMenuBar menuBar = new JMenuBar();
JMenu menuFile = new JMenu("File");
menuFile.setMnemonic('F');
// create About menu item
JMenu menuHelp = new JMenu("Help");
menuHelp.setMnemonic('H');
JMenuItem Commands = new JMenuItem("Commands");
Commands.setMnemonic('C');
Commands.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
Commands();
}
});
menuHelp.add(Commands);
JMenuItem helpMan = new JMenuItem("Manual");
helpMan.setMnemonic('M');
helpMan.addActionListener(
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -