`
然并卵-277
  • 浏览: 19540 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

JAVA简单画图板的实现

阅读更多
Java中边框布局:
1.把窗口分成5个区域:北、南、东、西、中 每个区域最多只能可以包含一个组件 (如果想把窗口分的更多 可以再其中一个区域上添加面板 面板上再添加组件)
2.NORTH 和 SOUTH 组件可以在水平方向上拉伸;而 EAST 和 WEST 组件可以在垂直方向上拉伸;CENTER 组件可同时在水平和垂直方向上拉伸,从而填充所有剩余空间。(例子中的panelcenter的大小没有意义,panelleft的height和panelbottom的width没有意义)

Java中单选按钮:
1.通过ButtonGroup对象 给多个单选按钮进行逻辑分组
2.当多个JRadioButton共用一个事件监听器的时候,如何获取产生事件的按钮?(Java中获得
ButtonGroup选项的方法)
  a.在画图板主类中每个单选按钮对象调用setActionCommand();方法 设置唯一的动作命令
     eg:JRadioButton btn1 = new JRadioButton("直线");
        btn1.setActionCommand("line");//设置唯一标识
  b.按钮组对象调用getSelection();方法 获得被选中的按钮模型
    eg:ButtonGroup group = new ButtonGroup();
       ButtonModel model = group.getSelection();
  c.ButtonMode对象调用getActionCommand();获得动作命令
     eg:String str = model.getActionCommand();
  d.通过str的值来进行区分鼠标选中的是哪个按钮
  (步骤2和3可以合并 String str=group.getSelection().getActionComman();)
   方法说明:
         void setActionCommand(String s)//设置按钮及其模型的动作命令
         ButtonModel getSelection()   //返回被选择的按钮的按钮模型
         String getActionCommand()      //返回该按钮的动作命令字符串

Java中不同类里共享私有变量可以通过构造方法来实现

    新手一只,请多指教! 
DrawUI
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;

import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;

public class DrawUI {
public static void main(String[] args) {
JFrame jf=new JFrame();
jf.setSize(600, 500);
jf.setTitle("画图板");
jf.setDefaultCloseOperation(3);

         //指定窗口布局为边框布局
BorderLayout layout=new BorderLayout();
jf.setLayout(layout);

//添加一个用来绘图的面板
JPanel panelleft=new JPanel();
panelleft.setBackground(Color.blue);
           //设置大小
Dimension dimleft=new Dimension(100,1);
panelleft.setPreferredSize(dimleft);

JPanel panelcenter=new JPanel();
panelcenter.setBackground(Color.gray);
//中间组件大小没有意义
// Dimension dimcenter=new Dimension(1,1);
// panelcenter.setPreferredSize(dimcenter);

JPanel panelbottom=new JPanel();
panelbottom.setBackground(Color.green);
Dimension dimbottom=new Dimension(1,100);
panelbottom.setPreferredSize(dimbottom);

//把面板添加到窗口中,指定放的位置【东西南北中】
jf.add(panelleft,BorderLayout.WEST);
jf.add(panelcenter,BorderLayout.CENTER);
jf.add(panelbottom,BorderLayout.SOUTH);
  
//*********************给左边的面板添加形状选择工具***********************//
//按钮组对象,给单选按钮进行逻辑分组
ButtonGroup  group =new ButtonGroup();

JRadioButton button1=new JRadioButton("直线");
panelleft.add(button1);//加在左边面板上
group.add(button1);//添加分组
button1.setActionCommand("line");//设置唯一标识
button1.setSelected(true);//设置默认选中 避免出现空指针的错误

JRadioButton button2=new JRadioButton("矩形");
panelleft.add(button2);
group.add(button2);
button2.setActionCommand("rect");

JRadioButton button3=new JRadioButton("椭圆");
panelleft.add(button3);
group.add(button3);
button3.setActionCommand("oval");

//*****************给中间的面板添加绘图面板***************************//

JPanel  drawpanel=new JPanel();
Dimension drawdim=new Dimension(400,300);
drawpanel.setPreferredSize(drawdim);
drawpanel.setBackground(Color.white);

//流式布局是添加在中间面板上的
//面板默认的布局为流式布局
//指定中间面板的布局为流式布局左对齐
FlowLayout  drawlayout =new FlowLayout(FlowLayout.LEFT);
panelcenter.setLayout(drawlayout);
panelcenter.add(drawpanel);
//********************给底部的面板添加颜色选择工具***********************//

jf.setVisible(true);

//由于是绘制在drawpanel上的,所以只需要给drawpanel添加鼠标监听器
DrawListener listener=new DrawListener(drawpanel, group);
//给面板添加鼠标监听器
drawpanel.addMouseListener(listener);
 
}
}
DrawListener

import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.ButtonGroup;
import javax.swing.ButtonModel;
import javax.swing.JPanel;

public class DrawListener  implements MouseListener {
          private int x1,x2,y1,y2;
          private Graphics g;
          private JPanel drawpanel;
          private ButtonGroup group;
          private String str="line";//初始化避免出现空指针的错误

       //通过构造方法实现不同类中私有变量的共享  
         public DrawListener(JPanel drawpanel1,ButtonGroup group1){
           drawpanel=drawpanel1;
           group=group1;
            }
      
  public void mousePressed(MouseEvent e) {
               // 鼠标按下准备绘制图形的时候先获取能绘制的区域[画布]
   // 获取drawPanel在屏幕上占据的区域,作为可以改变颜色的区域
   g=drawpanel.getGraphics();

// 鼠标按下准备绘制的时候来确定要绘制的图形
// 获得被选中的按钮模型
   ButtonModel model=group.getSelection();

// 获得动作命令[每一个按钮的唯一标识]
   str=model.getActionCommand();
   // str=group.getSelection().getActionCommand();
   x1=e.getX();
   y1=e.getY();   
}
public void mouseReleased(MouseEvent e) {
  x2=e.getX();
  y2=e.getY();

  // 绘制图形
  if(str.equals("line")){
  g.drawLine(x1, y1, x2, y2);  
  }
  else if(str.equals("rect")){
  int x=x1<x2?x1:x2;
  int y=y1<y2?y1:y2;
  int width=x1<x2?x2-x1:x1-x2;
      int height=y1<y2?y2-y1:y1-y2;
      g.drawRect(x, y, width, height);
  }
  else if(str.equals("oval")){
  int x=x1<x2?x1:x2;
  int y=y1<y2?y1:y2;
  int width=x1<x2?x2-x1:x1-x2;
      int height=y1<y2?y2-y1:y1-y2;
      g.drawOval(x, y, width, height);   
  }
 
}

public void mouseClicked(MouseEvent e) {

}
public void mouseEntered(MouseEvent e) {

}
public void mouseExited(MouseEvent e) {

}

}
分享到:
评论

相关推荐

    JAVA简易画图板

    【JAVA简易画图板】是一个基于Java编程语言开发的简单绘图应用程序,它为用户提供了一个基本的图形界面,用户可以通过这个界面进行简单的绘画操作。这个程序包含了一些基本的绘图功能,如绘制形状、使用铅笔工具以及...

    Java简易画图板

    【Java简易画图板】是一个基于Java编程语言开发的简单图形绘制工具,它为用户提供了一个基本的画布,用户可以通过各种绘图工具进行创作。这个程序包含了一系列基础的图形元素和编辑功能,如直线、铅笔、圆形和矩形,...

    java 画图板 windows画图板简单实现

    在Java编程语言中,实现一个简单的Windows画图板是一个经典的练习,它可以帮助初学者更好地理解图形用户界面(GUI)的设计以及事件处理机制。这个项目通常会涉及到Java的Swing库,这是一个用于创建桌面应用程序的GUI...

    Java实现简易画图板

    通过以上步骤,我们可以构建一个功能齐全的Java简易画图板。这个项目不仅可以帮助学习者掌握Java GUI编程,还能加深对图形绘制和事件处理的理解。在实际开发过程中,还可以进一步增加撤销/重做功能、图层管理、...

    java画图板程序代码

    Java 画图板程序设计与实现 Java 画图板是使用 Java 语言编写的图形绘制程序,提供了基本的绘图功能,如画笔、直线、椭圆、矩形等,用户可以使用该程序绘制简单的图形。下面我们将对 Java 画图板程序进行详细的分析...

    Java 实现画图板

    在Java编程语言中,实现一个简单的画图板是一项常见的任务,尤其对于初学者来说,它可以帮助理解图形用户界面(GUI)编程的基本概念。这个项目涵盖了Java AWT(Abstract Window Toolkit)或Swing库中的基本绘图功能...

    java实现简易画图板源码

    在这个简易画图板项目中,我们可能需要使用`JFrame`作为应用程序的主窗口,`JPanel`作为画布,以及`Graphics2D`对象进行绘图。 1. **JFrame**: 是Swing中的顶级容器,相当于窗口。在这里,我们将用它来创建我们的...

    java简单画图板

    在本项目中,"java简单画图板" 是一个基于Java编程语言开发的简易图形界面应用程序,主要目标是为用户提供一个基本的画图环境。这个画图板支持绘制直线、椭圆、矩形以及使用喷枪工具,同时具备画笔、橡皮擦、油漆桶...

    Java简单画图板---画图,保存,打开,擦除

    这个"Java简单画图板"项目提供了基本的绘画功能,如绘制、保存、打开以及擦除,为用户提供了一个自定义图形的平台。下面将详细解释其中涉及的关键知识点。 首先,我们需要了解Java Swing库,它是Java AWT(Abstract...

    JAVA实现画图板

    在JAVA编程环境中,创建一个简易的画图板是一项有趣且实用的任务。这个画图板能够提供多种基础图形绘制功能,包括直线、圆形、矩形、橡皮擦、喷枪、椭圆、圆角矩形、弧线以及多边形。在实现过程中,主要涉及到Swing...

    java学习小总结——画图板制作(附代码)

    在Java学习过程中,创建一个简单的画图板是一个经典的练习项目,它可以帮助我们深入理解图形用户界面(GUI)的构建和事件处理机制。本篇小结将聚焦于如何使用Java实现一个基本的画图板,同时提供相关的源码分析。 1...

    JAVA应用程序 画图板

    【JAVA应用程序 画图板】是一个使用JAVA编程语言实现的简单图形用户界面(GUI)应用,它提供了一个画布供用户进行绘画操作。这个程序的核心是利用JAVA的Swing或JavaFX库来创建图形界面,并处理用户的输入事件,如...

    简易画图板程序java

    【简易画图板程序java】是一个基于Java编程语言实现的简单图形绘制软件,它涵盖了图形学的基本概念和技术,为用户提供了一个交互式的平台,可以进行基本的图形绘制操作。这个程序的核心功能包括画直线、绘制圆以及对...

    Java简易绘图板实现.rar_Java画图板_java 绘图板_java绘图_java绘图板编程_painter

    Java简易绘图板实现是一个基于Java编程语言的项目,它为初学者提供了一个基础的图形绘制平台。这个项目的核心目标是让学习者了解和实践如何在Java环境下进行图形用户界面(GUI)的开发,以及图形的绘制和保存功能。...

    java画图板 实现基本画图功能

    在Java编程语言中,创建一个简单的画图板是一项有趣且实用的任务,可以帮助初学者更好地理解图形用户界面(GUI)的设计和事件处理。本项目通过Java实现了基础的绘图功能,包括绘制矩形、圆形、三角形、多边形以及...

    java画图板小程序,包括多种移动,复制,换色等功能

    Java画图板小程序是一个基于Java编程语言开发的图形用户界面应用,它提供了丰富的绘图功能,如移动、复制和换色等,旨在为用户提供一个简单而直观的创作平台。这个程序的设计采用了MVC(Model-View-Controller)架构...

    java画图板程序,功能齐全,代码简单

    Java画图板程序是一种利用Java编程语言开发的图形用户界面应用,主要目的是提供一个平台让用户可以进行简单的绘图操作。这个程序的特点是功能全面且代码实现简洁,对于初学者来说,是一个很好的学习和实践项目。 ...

    java画图板java画图板

    Java画图板是一种基于Java语言实现的图形用户界面(GUI)工具,允许用户在屏幕上绘制图形和图像。在Java中,我们通常使用Java AWT(Abstract Window Toolkit)或Swing库来创建这样的画图应用程序。这两个库都是Java ...

    Java实现画图面板

    在Java编程语言中,开发一个简单的画图面板是一项常见的任务,尤其对于初学者来说,它可以帮助理解图形用户界面(GUI)的构建以及事件处理。在这个项目中,我们使用Java实现了一个基本的画图面板,允许用户绘制直线...

    精美JAVA程序 画图板

    《精美JAVA程序 画图板》是一款基于JAVA编程语言开发的图形用户界面应用程序,专为用户提供一个简单易用、功能丰富的画图平台。在已经安装并配置好Java Development Kit (JDK) 的环境下,用户只需双击提供的.jar文件...

Global site tag (gtag.js) - Google Analytics