当前位置:首页 > java画板课程设计报告
并把这些面板与画图获取加到JFrame 中,该功能截图如图1。具体代码如下
图1 主界面
public void init() { // 设置标题 this.setTitle(\未命名 - 画图\); // 初始化画图 service.initDrawSpace(this); // 设置标题获取正在使用的工具 tool = ToolFactory.getToolInstance(this, PENCIL_TOOL); // 创建鼠标运动监听器 MouseMotionListener motionListener = new MouseMotionAdapter() { public void mouseDragged(MouseEvent e) { tool.mouseDragged(e); } public void mouseMoved(MouseEvent e) { tool.mouseMoved(e); } }; MouseListener mouseListener = new MouseAdapter() { // 松开鼠标 public void mouseReleased(MouseEvent e) { tool.mouseReleased(e); } // 按下鼠标 public void mousePressed(MouseEvent e) { tool.mousePressed(e); } // 点击鼠标 public void mouseClicked(MouseEvent e) { tool.mouseClicked(e); } };
//为窗体注册监听器 drawSpace.addMouseMotionListener(motionListener); drawSpace.addMouseListener(mouseListener); createMenuBar(); // 以drawSpace为viewport去创建一个JScrollPane scroll = new JScrollPane(drawSpace); // 设置viewport ImageService.setViewport(scroll, drawSpace, bufferedImage.getWidth(), bufferedImage.getHeight()); // 将panel加到本Frame上面 this.add(scroll, BorderLayout.CENTER); this.add(toolPanel, BorderLayout.WEST); this.add(colorPanel, BorderLayout.SOUTH);
}
2.2加入菜单
把文件、查看、颜色、帮助四个菜单文字放在一个String 类型的数组menuArr 里面,并迭代这个数组去创建一个JMenu,JMenu 就是指菜单。同样,把他们下面的各个菜单项文字也放在一个String 类型的二维数组里面,去迭代创建每个JmenuItem(菜单项),每创建完一个,就为它加上一个动作监听器,去监听这个菜单项是否被点击。该功能截图如图2。具体代码如下
图2 加入菜单后的界面
public void createMenuBar() {
// 创建一个JMenuBar放置菜单
JMenuBar menuBar = new JMenuBar();
// 菜单文字数组,与下面的menuItemArr一一对应 String[] menuArr = { \文件(F)\, \查看(V)\, \颜色(C)\, \帮助(H)\ }; // 菜单项文字数组 String[][] menuItemArr = { { \新建(N)\, \打开(O)\, \保存(S)\, \, \退出(X)\ },
{ \工具箱(T)\, \颜料盒(C)\ }, { \编辑颜色\ }, { \帮助主题
\, \关于\ } };
// 遍历menuArr与menuItemArr去创建菜单
for (int i = 0; i < menuArr.length; i++) {
// 新建一个JMenu菜单
JMenu menu = new JMenu(menuArr[i]);
for (int j = 0; j < menuItemArr[i].length; j++) {
// 如果menuItemArr[i][j]等于\
if (menuItemArr[i][j].equals(\)) { // 设置菜单分隔
menu.addSeparator(); } else {
// 新建一个JMenuItem菜单项 JMenuItem menuItem = new JMenuItem(menuItemArr[i][j]);
menuItem.addActionListener(menuListener);
// 把菜单项加到JMenu菜单里面 menu.add(menuItem); } }
// 把菜单加到JMenuBar上 menuBar.add(menu); }
// 设置JMenubar
this.setJMenuBar(menuBar); }
2.3创建画图工具栏
画图工具栏,这里实现的工具有铅笔、刷子、拾色器、喷枪、橡皮擦、直线、多边形、矩形、椭圆,圆矩形,这里,每个工具我们用一个JButton 去代表它,使用JButton 的JButton(AbstractActoinaction)构造器去创建JButton,用这个构造器创建JButton,可以在AbstractAction 中加入按键的图标,以图形的方式创建按钮,另外,我们会有一个AbstractAction 的实现类。 该功能截图如图3。具体代码如下
图3 加入画图工具栏
public JPanel createToolPanel() {
// 创建一个JPanel
JPanel panel = new JPanel();
// 创建一个标题为\工具\的工具栏
JToolBar toolBar = new JToolBar(\工具\); // 设置为垂直排列
toolBar.setOrientation(toolBar.VERTICAL); // 设置为可以拖动
toolBar.setFloatable(true);
// 设置与边界的距离
toolBar.setMargin(new Insets(2, 2, 2, 2)); // 设置布局方式
toolBar.setLayout(new GridLayout(5, 2, 2, 2));
// 工具数组
String[] toolarr = { PENCIL_TOOL, BRUSH_TOOL, COLORPICKED_TOOL,
ATOMIZER_TOOL, ERASER_TOOL, LINE_TOOL, POLYGON_TOOL, RECT_TOOL,
ROUND_TOOL, ROUNDRECT_TOOL };
for (int i = 0; i < toolarr.length; i++) {
ImageAction action = new ImageAction(new ImageIcon(\ + toolarr[i] + \), toolarr[i], this);
// 以图标创建一个新的button
JButton button = new JButton(action);
// 把button加到工具栏中 toolBar.add(button); }
panel.add(toolBar); // 返回
共分享92篇相关文档