swing实现的界面实例
public class MyFrame extends JFrame implements ActionListener {
public Analysis ana = new Analysis();
// 菜单栏,北区
JMenuBar jm = new JMenuBar();
JMenu startMenu = new JMenu("开始");
JMenu runMenu = new JMenu("运行");
JMenu optionMenu = new JMenu("选项");
JMenuItem openItem = new JMenuItem("打开");
JMenuItem saveItem = new JMenuItem("保存");
JMenuItem clearItem = new JMenuItem("清除");
JMenuItem quitItem = new JMenuItem(" 退出");
JMenuItem analyItem = new JMenuItem("分析");
JMenuItem optionItem = new JMenuItem("配置");
JMenuItem helpItem = new JMenuItem("帮助");
JMenuItem aboutItem = new JMenuItem("关于");
// 按钮面板,南区
JButton[] jb = { new JButton("打开"), new JButton("清除"), new JButton("保存"),
new JButton("分析"), new JButton("退出") };
JPanel buttonJPane = new JPanel(new FlowLayout());
// 选项卡0,西区
JTabbedPane jtab0 = new JTabbedPane();
JTextArea sourceTextArea = new JTextArea(19, 35);
JScrollPane sourceJSP = new JScrollPane(sourceTextArea);
// 选项卡1,东区
JTabbedPane jtab1 = new JTabbedPane(SwingConstants.TOP);
JTextArea reportTextArea = new JTextArea("", 19, 35);
JTextArea tableTextArea = new JTextArea("", 19, 35);
JTextArea ruleTextArea = new JTextArea("", 19, 35);
JScrollPane reportJSP = new JScrollPane(reportTextArea);
JScrollPane tableJSP = new JScrollPane(tableTextArea);
JScrollPane ruleJSP = new JScrollPane(ruleTextArea);
MyFrame() {
this.setTitle("C语言词法分析器");
this.setLayout(new BorderLayout());
this.setBounds(100, 100, 840, 520);
this.setResizable(false);
// 菜单栏设计,北区
startMenu.add(openItem);
openItem.addActionListener(this);
startMenu.add(saveItem);
saveItem.addActionListener(this);
startMenu.add(quitItem);
quitItem.addActionListener(this);
runMenu.add(clearItem);
clearItem.addActionListener(this);
runMenu.add(analyItem);
analyItem.addActionListener(this);
optionMenu.add(optionItem);
optionMenu.add(helpItem);
helpItem.addActionListener(this);
optionMenu.add(aboutItem);
aboutItem.addActionListener(this);
jm.add(startMenu);
jm.add(runMenu);
jm.add(optionMenu);
this.add(jm, BorderLayout.NORTH);
// 按钮设计,南区
for (int i = 0; i < jb.length; i++) {
buttonJPane.add(jb[i]);
jb[i].addActionListener(this);
}
this.add(buttonJPane, BorderLayout.SOUTH);
// 源程序输入,西区
jtab0.add("源程序", sourceJSP);
this.add(jtab0, BorderLayout.WEST);
// 结果输出,东区
reportTextArea.setEditable(false);
tableTextArea.setEditable(false);
ruleTextArea.setEditable(false);
jtab1.add("分析报告", reportJSP);
jtab1.add("符号表", tableJSP);
jtab1.add("帮助", ruleJSP);
this.add(jtab1, BorderLayout.EAST);
this.loadRuleFile();
this.setVisible(true);
}
效果图:
采用border布局,北部为JMenuBar ,南部为JPanel上放几个Button
要弹出消息用 JOptionPanel.ShowMessageDialog(this,"内容");
文件打开/保存器 FileDialog FileDialog fd = new FileDialog(this, "标题", 打开模式);