62,625
社区成员
发帖
与我相关
我的任务
分享

public class MainFrame extends JFrame implements ActionListener {
private JMenuBar jmb;
private JMenu file,edit,run,user;
private JMenuItem fileNew,fileOpen,fileSave,fileExit;
private JMenuItem editRedo,editUndo;
private JMenuItem execute;
private JMenuItem login;
private JMenuItem logout;
private JPanel jpWest;
private JTextField jtfInput;
private JLabel jlOutput;
private JTextArea ta;
private PaintFrame welcome;
private String currentFileName;
private String currentUserName;
private JLabel jlUserName;
private JLabel jlFileName;
private JLabel jlTime;
private Timer timer;
public MainFrame(String username) {
this.currentUserName = username;
this.setTitle("BF CodeRunner");
this.setLayout(null);
//定义菜单栏组件
jmb = new JMenuBar();
file = new JMenu("File");
file.setFont(MyFont.f4);
edit = new JMenu("Edit");
edit.setFont(MyFont.f4);
run = new JMenu("Run");
run.setFont(MyFont.f4);
user = new JMenu("System");
user.setFont(MyFont.f4);
//定义条目
fileNew = new JMenuItem("New");
fileNew.setActionCommand("newFile");
fileNew.addActionListener(this);
fileOpen = new JMenuItem("Open");
fileOpen.setActionCommand("openFile");
fileOpen.addActionListener(this);
fileSave = new JMenuItem("Save");
fileSave.setActionCommand("saveFile");
fileSave.addActionListener(this);
fileSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_DOWN_MASK));
file.addSeparator();
fileExit = new JMenuItem("Exit");
fileExit.setActionCommand("exit");
fileExit.addActionListener(this);
file.add(fileNew);file.add(fileOpen);file.add(fileSave);file.add(fileExit);
jmb.add(file);
editRedo = new JMenuItem("Redo");
editRedo.setActionCommand("redo");
editRedo.addActionListener(this);
editUndo = new JMenuItem("Undo");
editUndo.setActionCommand("undo");
editUndo.addActionListener(this);
edit.add(editRedo);edit.add(editUndo);
jmb.add(edit);
execute = new JMenuItem("Execute");
execute.setActionCommand("execute");
execute.addActionListener(this);
run.add(execute);
jmb.add(run);
login = new JMenuItem("Login");
login.setActionCommand("login");
login.addActionListener(this);
logout = new JMenuItem("Logout");
logout.setActionCommand("logout");
logout.addActionListener(this);
user.add(login);
user.add(logout);
jmb.add(user);
this.setJMenuBar(jmb);
//定义中部的代码区
//启动时如果没有newFile,那么显示欢迎画面
//设置两个组件的位置,大小一致,就可以实现一个组件对另外一个组件的覆盖
//说明:先加入的组件,会显示在最上面,后加入的组件,会在底层。
// welcome = new PaintFrame("",200,0,600,400);
jlUserName = new JLabel("User:"+this.currentUserName);
jlUserName.setBounds(200,0,200,30);
jlFileName = new JLabel();
jlFileName.setBounds(400, 0, 200, 30);
jlTime = new JLabel();
jlTime.setBounds(600,0,200,30);
timer = new Timer(1000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
jlTime.setText("Time:"+new SimpleDateFormat("yyyy-MM-dd- kk:mm:ss").format(System.currentTimeMillis()));
}
});
timer.start();
ta = new JTextArea();
ta.setBounds(200,30,600, 400);
ta.setMargin(new Insets(10, 10, 10, 10));
ta.setBackground(Color.LIGHT_GRAY);
this.add(jlUserName);
this.add(jlFileName);
this.add(jlTime);
this.add(ta);
//定义南部的输入输出区
jtfInput = new JTextField();
jtfInput.setBounds(200, 400, 300, 200);
jlOutput = new JLabel();
jlOutput.setBounds(500, 400, 300, 200);
this.add(jtfInput);
this.add(jlOutput);
//定义西侧的版本树
jpWest = new JPanel();
jpWest.setBounds(0,0,200, 600);
jpWest.setBackground(Color.cyan);
this.add(jpWest);
//定义JFrame的属性
this.setResizable(false);
this.setIconImage(Toolkit.getDefaultToolkit().getImage("2.png"));
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(800, 600);
this.setLocation(400, 200);
this.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
String cmd = e.getActionCommand();
try{
switch(cmd){
case "newFile":System.out.println("newFile");
this.currentFileName= JOptionPane.showInputDialog(this, "FileName:");
jlFileName.setText("FileName: "+currentFileName);
ta.setText("");
break;
case "openFile":System.out.println("openFile");break;
case "saveFile":System.out.println("saveFile");
RemoteHelper.getInstance().getIOService().writeFile(ta.getText(),currentUserName, currentFileName);
break;
case "exit":this.dispose();break;
case "redo":System.out.println("redo");break;
case "undo":System.out.println("undo");break;
case "execute":
System.out.println("execute");
break;
case "login":System.out.println("login");break;
case "logout":System.out.println("login");break;
}
}catch (RemoteException e1) {
e1.printStackTrace();
}
}
public void showMsg(String msg){
switch(msg){
case "saveFail":JOptionPane.showMessageDialog(this,"Save File Error! Please try again.");
}
}
}
