Java记事本GUI界面设计


一、分析一下要写的记事本界面风格(当然是照葫芦画瓢了)

·               需要的swing组件如下:一个JFrame框架容器组件,一个JMenuBar菜单栏组件,五个JMenu菜单组件,二十三个JMenuItem组件,一个JTextArea文本域组件,一个JSCrollPane滚动窗格组件。

界面布局采用的是默认布局方式:BorderLayout边界布局。

二、代码实现

· 实现思路:①先定义组件(组件变量名采用缩写)

           //定义菜栏条组件
	    private  JMenuBar jmb;
	   //定义菜单组件
	   private JMenu []jm=new JMenu[5];
	   //定义菜单项
	   private JMenuItem []jmi=new JMenuItem[23];
	   //定义文本域组件
	   private JTextArea jta;
	   //定义滚动窗格组件
	  private JScrollPane jsp;                    

 ②实现组件(按照定义的顺序实现组件)

                //实现组件
		//实现菜单条组件
		jmb=new JMenuBar();
		//实现菜单组件
		jm[0]=new JMenu("文件(F)");
		jm[1]=new JMenu("编辑(E)");
		jm[2]=new JMenu("格式(O)");
		jm[3]=new JMenu("查看(V)");
		jm[4]=new JMenu("帮助(H)");
		//实现文件(F)菜单的菜单项组件
		jmi[0]=new JMenuItem("新建(N)");
		jmi[1]=new JMenuItem("打开(O)");
		jmi[2]=new JMenuItem("保存(S)");
		jmi[3]=new JMenuItem("另存为(A)");
		jmi[4]=new JMenuItem("页面设置(U)");
		jmi[5]=new JMenuItem("打印(P)");
		jmi[6]=new JMenuItem("退出(X)");
		//实现编辑(E)菜单的菜单项组件
		jmi[7]=new JMenuItem("撤销(U)");
		jmi[8]=new JMenuItem("剪切(T)");
		jmi[9]=new JMenuItem("复制(C)");
		jmi[10]=new JMenuItem("粘贴(P)");
		jmi[11]=new JMenuItem("删除(L)");
		jmi[12]=new JMenuItem("查找(F)");
		jmi[13]=new JMenuItem("查找下一个(N)");
		jmi[14]=new JMenuItem("替换(R)");
		jmi[15]=new JMenuItem("转到(G)");
		jmi[16]=new JMenuItem("全选(A)");
		jmi[17]=new JMenuItem("日期/时间(D)");
		//实现格式(O)菜单的菜单项组件
		jmi[18]=new JMenuItem("自动换行(W)");
		jmi[19]=new JMenuItem("字体(F)");
		//实现格式(O)菜单的菜单项组件
		jmi[20]=new JMenuItem("状态栏(S)");
		//实现帮助(H)菜单的菜单项组件
		jmi[21]=new JMenuItem("查看帮助(H)");
		jmi[22]=new JMenuItem("关于记事本(A)");
		//实现文本域组件
		jta=new JTextArea();
		//向滚动窗格添加文本域组件
	       jsp=new JScrollPane(jta);
③添加组件(逐个添加组件)

                //添加组件
		//向文件菜单中添加菜单项
		for(int i=0;i< 7;i++)
		 jm[0].add(jmi[i]);
		//向编辑菜单中添加菜单项
		for(int i=7;i<=17;i++)
		 jm[1].add(jmi[i]);
		//向格式菜单中添加菜单项
		for(int i=18;i<=19;i++)
		 jm[2].add(jmi[i]);
		//向查看菜单中添加菜单项
		jm[3].add(jmi[20]);
		//向帮助菜单中添加菜单项
		for(int i=21;i<=22;i++)
		  jm[4].add(jmi[i]);
		//向菜单栏中添加菜单
		for(int i=0;i< 5;i++)
			 jmb.add(jm[i]);
		//添加滚动窗格组件
		this.add(jsp);
		//设置菜单栏
		this.setJMenuBar(jmb);
三、完整代码如下

package com.lhd;
import java.awt.*;
import javax.swing.*;
/**
 * @author Star—小东
 *  Notepad 记事本GUI开发
 */
public class NotePadWindow extends JFrame{  //创建NotePadWinddow类用来建立记事本GUI
    //定义窗体组件
	//定义菜栏条组件
	private  JMenuBar jmb;
	//定义菜单组件
	private JMenu []jm=new JMenu[5];
	//定义菜单项
	private JMenuItem []jmi=new JMenuItem[23];
	//定义文本域组件
	private JTextArea jta;
	//定义滚动窗格组件
	private JScrollPane jsp;
	public NotePadWindow() { 
		//实现组件
		//实现菜单条组件
		jmb=new JMenuBar();
		//实现菜单组件
		jm[0]=new JMenu("文件(F)");
		jm[1]=new JMenu("编辑(E)");
		jm[2]=new JMenu("格式(O)");
		jm[3]=new JMenu("查看(V)");
		jm[4]=new JMenu("帮助(H)");
		//实现文件(F)菜单的菜单项组件
		jmi[0]=new JMenuItem("新建(N)");
		jmi[1]=new JMenuItem("打开(O)");
		jmi[2]=new JMenuItem("保存(S)");
		jmi[3]=new JMenuItem("另存为(A)");
		jmi[4]=new JMenuItem("页面设置(U)");
		jmi[5]=new JMenuItem("打印(P)");
		jmi[6]=new JMenuItem("退出(X)");
		//实现编辑(E)菜单的菜单项组件
		jmi[7]=new JMenuItem("撤销(U)");
		jmi[8]=new JMenuItem("剪切(T)");
		jmi[9]=new JMenuItem("复制(C)");
		jmi[10]=new JMenuItem("粘贴(P)");
		jmi[11]=new JMenuItem("删除(L)");
		jmi[12]=new JMenuItem("查找(F)");
		jmi[13]=new JMenuItem("查找下一个(N)");
		jmi[14]=new JMenuItem("替换(R)");
		jmi[15]=new JMenuItem("转到(G)");
		jmi[16]=new JMenuItem("全选(A)");
		jmi[17]=new JMenuItem("日期/时间(D)");
		//实现格式(O)菜单的菜单项组件
		jmi[18]=new JMenuItem("自动换行(W)");
		jmi[19]=new JMenuItem("字体(F)");
		//实现格式(O)菜单的菜单项组件
		jmi[20]=new JMenuItem("状态栏(S)");
		//实现帮助(H)菜单的菜单项组件
		jmi[21]=new JMenuItem("查看帮助(H)");
		jmi[22]=new JMenuItem("关于记事本(A)");
		//实现文本域组件
		jta=new JTextArea();
		//向滚动窗格添加文本域组件
	    jsp=new JScrollPane(jta);
		//添加组件
		//向文件菜单中添加菜单项
		for(int i=0;i< 7;i++)
		 jm[0].add(jmi[i]);
		//向编辑菜单中添加菜单项
		for(int i=7;i<=17;i++)
		 jm[1].add(jmi[i]);
		//向格式菜单中添加菜单项
		for(int i=18;i<=19;i++)
		 jm[2].add(jmi[i]);
		//向查看菜单中添加菜单项
		jm[3].add(jmi[20]);
		//向帮助菜单中添加菜单项
		for(int i=21;i<=22;i++)
		  jm[4].add(jmi[i]);
		//向菜单栏中添加菜单
		for(int i=0;i< 5;i++)
			 jmb.add(jm[i]);
		//添加滚动窗格组件
		this.add(jsp);
		//设置菜单栏
		this.setJMenuBar(jmb);
		//设置窗体图标
		this.setIconImage((new ImageIcon("images/NotePadLogo.jpg")).getImage());
		//设置窗体标题
		this.setTitle("NotePad");
    	//设置窗体大小
		this.setSize(700,500);
		//设置窗体起始位置
		this.setLocation(400,150);
		//设置窗体关闭方式
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		//设置窗体可见
		this.setVisible(true);
   }
	public static void main(String[] args) {
		//创建NotePad实例对象
		NotePadWindow notepad =new NotePadWindow();
	}
}
四、总结

遇到的问题:

①在向JFrame容器中添加JMenuBar菜单栏组件时,当初想当然用的是JFame类的add()方法,实际是setJMenuBar()方法。

②滚动条问题

错误写法:

JTextArea jta=new JTextarea();

JScrollPane jsp=new JScrollPane();

jsp.add(jta);

正确写法:

JTextArea jta=new JTextarea();

JScrollPane jsp=new JScrollPane(jta);

③有待完善

五、NotePad 的GUI界面

  • 6
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值