java 的画板上面的一个橡皮檫功能
importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;classToolBarextendsJPanel...
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class ToolBar extends JPanel{//工具条
Image[] img;//图标数组
int select=0;//选择项
ToolBar(String[] s){//构造方法
int n=s.length;
img=new Image[n];
for(int i=0;i<n;i++)img[i]=getToolkit().getImage(s[i]);//装载图像
setPreferredSize(new Dimension(0,30));//首选大小
addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e){//按下鼠标
int n=(e.getX()-5)/25;
if(n<img.length){select=n;repaint();}//刷新
}
});
}
protected void paintComponent(Graphics g){//重绘
g.clearRect(0,0,getWidth(),getHeight());//清除
for(int i=0;i<img.length;i++)g.drawImage(img[i],5+i*25,5,20,20,this);//绘制图标
g.drawRect(3+select*25,3,23,23);//突出选择项
}
}
//////////////////////////////////////////////////////////////////////////////////
class P extends JPanel{//画板
ToolBar toolBar;//工具条
int state=0;
int x=0;
int y=0;
Image bImage;//后台图像
Graphics bg;//后台画布
P(ToolBar b){//构造方法
toolBar=b;
addMouseListener(
new MouseAdapter(){//监听器
public void mousePressed(MouseEvent e){
switch(toolBar.select){
case 1://椭圆
state+=1000;
x=e.getX();
y=e.getY();
break;
case 2://矩形
state+=2000;
x=e.getX();
y=e.getY();
break;
}
}
public void mouseReleased(MouseEvent e){
switch(toolBar.select){
case 1://椭圆
bg.setColor(Color.black);//黑色
bg.drawOval(x,y,e.getX()-x,e.getY()-y);//椭圆
repaint();//重绘
break;
case 2://矩形
bg.setColor(Color.black);//黑色
bg.drawRect(x,y,e.getX()-x,e.getY()-y);//椭圆
repaint();//重绘
break;
}
}
});
}
protected void paintComponent(Graphics g){//自动重绘
if(bImage==null){//首次创建
bImage = createImage(getSize().width,getSize().height);//后台图像
bg=bImage.getGraphics();//后台画布
bg.setColor(Color.white);//白色
bg.fill3DRect(0, 0, getWidth(), getHeight(), true); //矩形
}
g.drawImage(bImage,0,0,this);//将背景图复制到前台
}
}
class paint{
public static void main(String[] args){
JFrame f=new JFrame("电子画板");
String[] s={"橡皮擦.jpg","椭圆.jpg","矩形.jpg"};
ToolBar b=new ToolBar(s);
f.add(b,"North");
f.add(new P(b));
f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);
f.setBounds(200,100,400,300);
f.setVisible(true);
}
}
-------------------------------------------------------------
放至代码的文件夹下面有三个小图标 橡皮擦.jpg","椭圆.jpg","矩形.jpg 现在我的橡皮檫功能还没有实现,问一下有没有什么Graphics里面的方法能提供这种功能· 展开
import javax.swing.*;
import java.awt.event.*;
class ToolBar extends JPanel{//工具条
Image[] img;//图标数组
int select=0;//选择项
ToolBar(String[] s){//构造方法
int n=s.length;
img=new Image[n];
for(int i=0;i<n;i++)img[i]=getToolkit().getImage(s[i]);//装载图像
setPreferredSize(new Dimension(0,30));//首选大小
addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e){//按下鼠标
int n=(e.getX()-5)/25;
if(n<img.length){select=n;repaint();}//刷新
}
});
}
protected void paintComponent(Graphics g){//重绘
g.clearRect(0,0,getWidth(),getHeight());//清除
for(int i=0;i<img.length;i++)g.drawImage(img[i],5+i*25,5,20,20,this);//绘制图标
g.drawRect(3+select*25,3,23,23);//突出选择项
}
}
//////////////////////////////////////////////////////////////////////////////////
class P extends JPanel{//画板
ToolBar toolBar;//工具条
int state=0;
int x=0;
int y=0;
Image bImage;//后台图像
Graphics bg;//后台画布
P(ToolBar b){//构造方法
toolBar=b;
addMouseListener(
new MouseAdapter(){//监听器
public void mousePressed(MouseEvent e){
switch(toolBar.select){
case 1://椭圆
state+=1000;
x=e.getX();
y=e.getY();
break;
case 2://矩形
state+=2000;
x=e.getX();
y=e.getY();
break;
}
}
public void mouseReleased(MouseEvent e){
switch(toolBar.select){
case 1://椭圆
bg.setColor(Color.black);//黑色
bg.drawOval(x,y,e.getX()-x,e.getY()-y);//椭圆
repaint();//重绘
break;
case 2://矩形
bg.setColor(Color.black);//黑色
bg.drawRect(x,y,e.getX()-x,e.getY()-y);//椭圆
repaint();//重绘
break;
}
}
});
}
protected void paintComponent(Graphics g){//自动重绘
if(bImage==null){//首次创建
bImage = createImage(getSize().width,getSize().height);//后台图像
bg=bImage.getGraphics();//后台画布
bg.setColor(Color.white);//白色
bg.fill3DRect(0, 0, getWidth(), getHeight(), true); //矩形
}
g.drawImage(bImage,0,0,this);//将背景图复制到前台
}
}
class paint{
public static void main(String[] args){
JFrame f=new JFrame("电子画板");
String[] s={"橡皮擦.jpg","椭圆.jpg","矩形.jpg"};
ToolBar b=new ToolBar(s);
f.add(b,"North");
f.add(new P(b));
f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);
f.setBounds(200,100,400,300);
f.setVisible(true);
}
}
-------------------------------------------------------------
放至代码的文件夹下面有三个小图标 橡皮擦.jpg","椭圆.jpg","矩形.jpg 现在我的橡皮檫功能还没有实现,问一下有没有什么Graphics里面的方法能提供这种功能· 展开
1个回答
AiPPT
2024-09-19 广告
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图...
点击进入详情页
本回答由AiPPT提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询