绘图设计软件java代码,java画图程序源代码

求解答以下的java源代码,详细点,说明这个程序的设计思路,还有比如运用了多线程的话运用了多线程的什么

import java.awt.*;

成都创新互联主营石楼网站建设的网络公司,主营网站建设方案,重庆APP开发公司,石楼h5小程序定制开发搭建,石楼网站营销推广欢迎石楼等地区企业咨询

import java.awt.event.*;

import java.util.Random;

import javax.swing.Timer;

public class PinBall

{

private final int TABLE_WIDTH = 300;//桌面宽度

private final int TABLE_HEIGHT = 400;//桌面高度

private final int RACKET_Y = 340;//球拍的垂直位置

private final int RACKET_HEIGHT = 20;//球拍高度

private final int RACKET_WIDTH = 60;//球拍宽度

private final int BALL_SIZE = 16;//球的大小

private Frame f = new Frame("弹球游戏");//实例化一个窗口

Random rand = new Random();//实例化一个随机数生成器

private int ySpeed = 10;//小球的纵向运动数度、

private double xyRate = rand.nextDouble() - 0.5;//返回一个-0.5到0.5之间的比率用控制小球运动方向

private int xSpeed = (int)(ySpeed*xyRate*2);//这个横向速度在-10到10之间,产生左右摆动运动效果

private int ballX = rand.nextInt(200)+20;//小球开始的横坐标位置,200表示产生0到100之间的随机数

private int ballY = rand.nextInt(10)+20;//小球开始的纵坐标位置

private int racketX = rand.nextInt(200);//球拍开始时的横坐标位置

private MyCanvas tableArea = new MyCanvas();//实力化一个画布工具,集成Canvas类

private String shape = "";//保存需要绘制图形的字符串属性

Timer timer;//声明一个时间变量

private boolean isLose = false;//表示游戏是否结束

public void init()

{

tableArea.setPreferredSize(new Dimension(TABLE_WIDTH,TABLE_HEIGHT));//定义画布大小

f.add(tableArea);//添加画布到窗口

KeyAdapter keyProcessor = new KeyAdapter()//实例化一个键盘监听事件适配器

{

public void keyPressed(KeyEvent ke)//重写适配器里面的按下某键盘方法

{

if(ke.getKeyCode()==KeyEvent.VK_LEFT)//按下键盘左键时

{

if(racketX 0)//球拍左边框不能出画布的左边框

racketX -=10;//按一左键次向左移动10个像素

}

if(ke.getKeyCode()==KeyEvent.VK_RIGHT)//按下键盘右键时

{

if(racketX TABLE_WIDTH - RACKET_WIDTH)//球拍右边框不能出画布的右边框

racketX +=10;//按一次右键移动向右移动10个像素

}

}

};

f.addKeyListener(keyProcessor);//给窗口添加键盘监听器

tableArea.addKeyListener(keyProcessor);//给画布添加键盘监听器

ActionListener taskPerformer = new ActionListener()//这里是实例化了一个监听接口,这个接口里面只有一个方法

{

public void actionPerformed(ActionEvent evt)//重写这个接口里面的方法,判断小球的位置

{

if(ballX=0 || ballX=TABLE_WIDTH-BALL_SIZE)//保证小球横向上在画布之内运动

{

xSpeed = -xSpeed;//触发反方向运动

}

if(ballY=RACKET_Y-BALL_SIZE(ballXracketX||ballXracketX+RACKET_WIDTH))//出了球拍的可击打范围

{

timer.stop();//停止对监听器的触发

isLose=true;//将标志isLose变量置为true

tableArea.repaint();//调用画布的重绘方法

}

else if(ballY=0||(ballY=RACKET_Y-BALL_SIZEballYracketXballX=racketX+RACKET_WIDTH))//小球在球拍之内,而其到达球拍的高度

{

ySpeed=-ySpeed;//上下方向改变,小球反弹

}

ballY+=ySpeed;//小球的坐标在纵向上增加

ballX+=xSpeed;//小球的坐标在横向上的增加

tableArea.repaint();//调用画布的重绘方法3

}

};

timer = new Timer(100,taskPerformer);//每隔0.1秒运行一次监听器

timer.start();//计时器开始运行

f.addWindowListener(new MyListener());//关闭窗口事件

f.pack();//设置窗口最佳大小

f.setVisible(true);//显示窗口

}

class MyListener extends WindowAdapter//关闭窗口的类

{

public void windowClosing(WindowEvent e)

{

System.exit(0);

}

}

public static void main(String[] args)//程序入口

{

new PinBall().init();//调用PinBall类里面的init()方法

}

class MyCanvas extends Canvas//建一个集成Canvas类的类

{

public void paint(Graphics g)//重写父类的绘图方法

{

if(isLose)//如果isLose为真,则在画布里打印“游戏已结束”

{

g.setColor(new Color(255,0,0));//当前颜色

g.setFont(new Font("黑体",Font.BOLD,30));//字体名称,样式,大小

g.drawString("游戏已结束!",50,200);//按坐标绘制文字图形

}

else//负责

{

g.setColor(new Color(240,240,80));//当前颜色

g.fillOval(ballX,ballY,BALL_SIZE,BALL_SIZE);//填充颜色,根据坐标和长宽填充圆形

g.setColor(new Color(80,80,200));//当前颜色

g.fillRect(racketX,RACKET_Y,RACKET_WIDTH,RACKET_HEIGHT);//填充颜色,根据坐标和长宽填充矩形

}

}

}

}

GUI画图板(绘图板)设计,用Java编写程序代码!!谢谢!!

只有矩形有圆形能移动,其它实现起来麻烦点,办法有的只是代码太多。

画圆弧改成了画曲线,圆弧稍麻烦,当然方法是很简单的,你可以自己思考一下。

双击13个颜色中的任意一个都会弹出颜色选择器。

有保存与打开功能。扩展名请用 .jdr

基本满足条件,细节可能不是很好,另,代码比较乱,怕不好看懂咯,呼呼。

import java.awt.*;

import java.awt.event.*;

import java.awt.geom.*;

import java.awt.image.BufferedImage;

import java.io.*;

import java.util.ArrayList;

import javax.swing.*;

import javax.swing.filechooser.FileNameExtensionFilter;

public class JDraw {

public static void main(String[] args) {

JFrame f=new JFrame();

f.setDefaultCloseOperation(3);

f.setSize(880,600);

f.setLocationRelativeTo(null);

f.getContentPane().add(M.c);

f.getContentPane().add(M.m,"South");

f.setVisible(true);

}

}

class CVS extends Component implements ComponentListener,MouseListener,MouseMotionListener{

public void componentHidden(ComponentEvent e) {}

public void componentMoved(ComponentEvent e) {}

public void componentResized(ComponentEvent e) {resized();}

public void componentShown(ComponentEvent e) {}

private void resized() {

int w=this.getWidth();

int h=this.getHeight();

tbuff=new BufferedImage(w,h,3);

makeBuff(w,h);

}

private void makeBuff(int w,int h) {

Graphics g = tbuff.getGraphics();

g.drawImage(buff,0,0,null);

g.dispose();

buff=new BufferedImage(w,h,3);

g=buff.getGraphics();

g.drawImage(tbuff,0,0,null);

g.dispose();

}

BufferedImage buff,tbuff;

CVS(){

this.addComponentListener(this);

this.addMouseListener(this);

this.addMouseMotionListener(this);

buff=new BufferedImage(1,1,3);

}

public void paint(Graphics gr){

Graphics2D g = buff.createGraphics();

g.setBackground(new Color(0xff000000,true));

g.clearRect(0,0,getWidth(),getHeight());

g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,

RenderingHints.VALUE_ANTIALIAS_ON);

M.sa.drawAll(g);

if(M.ts!=null)

M.ts.draw(g);

g.dispose();

gr.drawImage(buff,0,0,this);

gr.dispose();

}

public void mouseClicked(MouseEvent e) {}

public void mouseEntered(MouseEvent e) {}

public void mouseExited(MouseEvent e) {}

public void mousePressed(MouseEvent e) {

M.mp(e.getPoint());

}

public void mouseReleased(MouseEvent e) {

M.mr(e.getPoint());

}

public void mouseDragged(MouseEvent e) {

M.md(e.getPoint());

}

public void mouseMoved(MouseEvent e) {}

}

class Menu extends JComponent implements MouseListener,ActionListener{

JComboBox sbox,method;

CLabel[] cl;

JCheckBox fillC,drawB;

JRadioButton fc,bc;

ButtonGroup bg;

JButton clear,up,down,save,load;

Menu(){

this.setLayout(new FlowLayout());

method=new JComboBox(new Object[]{"draw","move","erase",});

add(method);

sbox=new JComboBox(new Object[]{"Pt","Ln","Rect","Cir","Arc",});

add(sbox);

cl=new CLabel[13];

for(int i=0; icl.length; i++){

cl[i]=new CLabel();

cl[i].addMouseListener(this);

add(cl[i]);

}

fc=new JRadioButton("fc",true);

bc=new JRadioButton("bc");

bg=new ButtonGroup();

bg.add(fc);bg.add(bc);

add(fc);add(bc);

fc.setOpaque(true);

bc.setOpaque(true);

fc.setBackground(Color.white);

bc.setBackground(Color.blue);

fillC=new JCheckBox("Fill",true);

drawB=new JCheckBox("Draw",true);

fillC.addActionListener(this);

drawB.addActionListener(this);

add(fillC);add(drawB);

clear=new JButton("clear");

clear.addActionListener(this);

add(clear);

up=new JButton("zUp");

up.addActionListener(this);

add(up);

down=new JButton("zDown");

down.addActionListener(this);

add(down);

save=new JButton("Save");

save.addActionListener(this);

add(save);

load=new JButton("Load");

load.addActionListener(this);

add(load);

}

public void mouseClicked(MouseEvent e) {

JLabel l=(JLabel)e.getSource();

if(e.getClickCount()==2){

Color sc=JColorChooser.showDialog(null, "Color chooser", l.getBackground());

l.setBackground(sc);

mousePressed(e);

}

}

public void mouseEntered(MouseEvent e) {}

public void mouseExited(MouseEvent e) {}

public void mousePressed(MouseEvent e) {

Color c=((JLabel)e.getSource()).getBackground();

if(fc.isSelected())

fc.setBackground(c);

else if(bc.isSelected())

bc.setBackground(c);

M.cp();

}

public void mouseReleased(MouseEvent e) {}

public void actionPerformed(ActionEvent e) {

if(e.getSource()==clear)M.clear();

else if(e.getSource()==up)M.up();

else if(e.getSource()==down)M.down();

else if(e.getSource()==save)M.save();

else if(e.getSource()==load)M.load();

else if(e.getSource()==fillC||e.getSource()==drawB)M.cp();

}

}

class CLabel extends JLabel{

static Color[] cs={Color.red,Color.orange,Color.yellow,Color.green,Color.cyan,

Color.blue,Color.magenta,Color.magenta.brighter(),

Color.white,Color.black,Color.gray,Color.LIGHT_GRAY,Color.DARK_GRAY,};

static int i;

CLabel(){

this.setOpaque(true);

this.setBackground(cs[i++]);

this.setBorder(BorderFactory.createLineBorder(Color.black));

this.setPreferredSize(new Dimension(10,20));

}

}

class M{

static JFileChooser jfc=new JFileChooser();

static Menu m=new Menu();

static CVS c=new CVS();

static SA sa=new SA();

static S ts=null,selected=null;

static Color fc,bc;

static void clear(){

sa.ss.clear();

c.repaint();

}

public static void cp() {

System.out.println(selected);

if(selected!=null){

selected.fillColor=m.fc.getBackground();

selected.borderColor=m.bc.getBackground();

selected.fc=m.fillC.isSelected();

selected.db=m.drawB.isSelected();

c.repaint();

}

}

public static void up() {

if(selected!=null){

sa.upZ(selected);

c.repaint();

}

}

public static void down(){

if(selected!=null){

sa.downZ(selected);

c.repaint();

}

}

static{

jfc.setFileFilter(new FileNameExtensionFilter("JDraw file (*.jdraw,*.jdr)","jdr","jdraw"));

}

static void save(){

int x=jfc.showSaveDialog(c);

if(x==JFileChooser.APPROVE_OPTION){

File f = jfc.getSelectedFile();

try{

ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(f));

oos.writeObject(sa);

oos.flush();

oos.close();

}catch(Exception e){}

}

}

static void load(){

int x=jfc.showOpenDialog(c);

if(x==JFileChooser.APPROVE_OPTION){

File f = jfc.getSelectedFile();

try{

ObjectInputStream oos=new ObjectInputStream(new FileInputStream(f));

Object r=oos.readObject();

if(r!=null){

sa=(SA)r;

c.repaint();

}

oos.close();

}catch(Exception e){e.printStackTrace();}

}

}

static int mx,my,tx,ty,ox,oy;

static int pc=0,pmax;

static int sm;

static boolean ne=true;

static int mid;

static void mp(Point p){

mid=m.method.getSelectedIndex();

if(mid==0){

if(ne){

mx=p.x;my=p.y;

pc=0;

sm=m.sbox.getSelectedIndex();

pmax=sm==4?2:1;

ne=false;

}

++pc;

}

else if(mid==1){

checkSel(p);

mx=p.x;my=p.y;

}

else if(mid==2){

checkSel(p);

if(selected!=null){

sa.ss.remove(selected);

c.repaint();

}

}

}

private static void checkSel(Point p) {

selected=null;

for(int i=sa.ss.size();i0; i--)

if(sa.ss.get(i-1).shape.contains(p)){

selected=sa.ss.get(i-1);break;

}

sa.select(selected);

c.repaint();

}

static void mt(){

Shape s=null;

int cx,cy,cw,ch;

switch(sm){

case 0:

case 2:

cx=Math.min(mx,tx);

cy=Math.min(my,ty);

cw=Math.abs(mx-tx);

ch=Math.abs(my-ty);

if(sm==0)

s=new Ellipse2D.Double(cx,cy,cw,ch);

else

s=new Rectangle(cx,cy,cw,ch);

break;

case 1:

s=new Line2D.Float(mx,my,tx,ty);

break;

case 3:

cw=Math.abs(mx-tx);

ch=Math.abs(my-ty);

int cd=(int)Math.sqrt(Math.pow(mx-tx,2)+Math.pow(my-ty,2))*2;

cx=mx-cd/2;

cy=my-cd/2;

s=new Ellipse2D.Double(cx,cy,cd,cd);

break;

case 4:

Path2D p=new Path2D.Double();

p.moveTo(mx,my);

if(pc==1){

p.lineTo(tx, ty);

}

else{

p.quadTo(ox,oy,tx,ty);

}

s=p;

break;

}

ts=new S(s,m.fc.getBackground(),m.bc.getBackground(),m.fillC.isSelected(),m.drawB.isSelected(),null);

c.repaint();

}

static void md(Point p){

if(mid==0){

if(!sa.ss.isEmpty()){

sa.ss.get(sa.ss.size()-1).sel=false;

}

if(pc1){

ox=p.x;oy=p.y;

}

else{

tx=p.x;ty=p.y;

}

mt();

}

else if(mid==1){

if(selected!=null){

moveTo(selected,p);

c.repaint();

}

}

else if(mid==2){

checkSel(p);

if(selected!=null){

sa.ss.remove(selected);

c.repaint();

}

}

}

static void moveTo(S s, Point p) {

if(s.shape instanceof Rectangle){

Rectangle r=(Rectangle)s.shape;

r.setLocation(r.x+p.x-mx,r.y+p.y-my);

mx=p.x;my=p.y;

}

else if(s.shape instanceof Ellipse2D){

Ellipse2D e=(Ellipse2D)s.shape;

e.setFrame(e.getX()+p.x-mx,e.getY()+p.y-my,e.getWidth(),e.getHeight());

mx=p.x;my=p.y;

}

}

static void mr(Point p) {

if(pc==pmax){

pc=0;

ne=true;

sa.add(ts);

selected=ts;

ts=null;

}

}

}

class S implements Serializable{

boolean fc,db,sel=true;

Shape shape;

Color fillColor,borderColor;

Stroke stroke;

static Stroke bstroke=new MyBasicStroke();

static Stroke selectStroke=new BasicStroke(1,BasicStroke.CAP_BUTT,BasicStroke.JOIN_MITER,1,new float[]{5,2},1);

S(Shape s,Color c,Color b,boolean f,boolean d,Stroke k){

this.shape=s;this.fillColor=c;this.borderColor=b;this.fc=f;this.db=d;this.stroke=k==null?bstroke:k;

}

void draw(Graphics2D g){

if(fc){

g.setColor(fillColor);

g.fill(shape);

}

if(db){

g.setColor(borderColor);

g.setStroke(stroke);

g.draw(shape);

}

if(sel){

g.setColor(Color.green);

g.setStroke(selectStroke);

g.draw(shape.getBounds());

}

}

}

class MyBasicStroke extends BasicStroke implements Serializable{}

class SA implements Serializable{

ArrayListS ss=new ArrayListS();

void add(S s){

if(s!=null){

for(S sx:ss)

sx.sel=false;

ss.add(s);

}

}

S remove(int i){

return ss.remove(i);

}

void remove(S s){

ss.remove(s);

}

void upZ(S s){

indexZ(s,1);

}

void downZ(S s){

indexZ(s,-1);

}

void indexZ(S s, int i) {

int si=ss.indexOf(s);

if(si+i0||si+iss.size()-1)return;

swap(s,ss.get(si+i));

}

void swap(S a,S b){

int ai=ss.indexOf(a);

int bi=ss.indexOf(b);

ss.set(ai,b);

ss.set(bi,a);

}

void select(S s){

for(S x:ss)

x.sel=false;

if(s!=null)

s.sel=true;

}

void drawAll(Graphics2D g){

for(S s:ss)

s.draw(g);

}

}

Java中如何让使用Python的统计包绘图

看来是同道。你提到的这个问题很难。

java调用python容易。 java甚至可以直接调用python的类。python调用java更容易了。

不过GUI要想融合,据目前20年的技术来看,只有本土的可以。 比如以前的微软件ActiveX,不管你是什么语言开发的都可以在windows下用OLE方式嵌入。

java的制图功能,因为它的设计理念 ,它是封闭的。也就是说,除非你使用了它本地化的GUI方法,否则就不可能实现。

那么说,如果我一定要实现怎么办呢?只能走很长的弯路。方法还是有几个的。

方法1:

在java的panel里嵌入一个浏览器,然后在浏览器里显示统计图表。这个真是不要太容易了。 不管是你是python生成的本地图片,还是直接用javascript生成的图都可以嵌入进去。美观不用说

方法2:

绘图使用开源的,比如plt之类的。不过它被本地化成java版本的。然后用java调用python,再用python产生数据后,通过jython调用java本地化的绘图工具。

表面上看,这个东西就是没有价值的,为什么不直接用java调用绘图。关键在于python本身对于数据处理的优势太明显。轻松就可以完成复杂的数据结构处理。所以还是有价值的

方法3:

浮动窗口方式。这个就不说了。如果你的java是固定在窗口特定位置的。这个就容易了。怎么浮动窗口要根据操作系统而定。

方法4:简单方案

python生成图片后,输出成JPEG或者是PNG或者是GIF,然后让JAVA显示这个图片。这个可能是最最简单的。

方法5:windows专用,不知道可否使用

仅限于特定场景,在要显示图片的地方,显示一个品红色的纯色图。然后让python的图形输出转到directshow之类的API,直接写显卡。这样就可以显示动画效果。

java绘图,求代码

上代码:

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.FlowLayout;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.LayoutManager;

import java.awt.Paint;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JTextField;

import java.awt.event.*;

public class YuanYiDong extends JFrame{

private static int BANJIN=0;

private static int X=0;

private static int Y=0;

JTextField rTxt=new JTextField(5);

JTextField xField=new JTextField(5);

JTextField yField=new JTextField(5);

JButton paintBt=new JButton("画");

JLabel huaban=new huaban();

JPanel jPanel=new JPanel();

JLabel banjingLabel,xLabel,yLabel;

public YuanYiDong(){

banjingLabel=new JLabel("半径");

xLabel=new JLabel("X坐标");

yLabel=new JLabel("Y坐标");

this.setTitle("圆的移动");

this.setLocation(300,100);

this.setSize(500, 400);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

this.add(rTxt);

jPanel.setLayout(new FlowLayout());

add(huaban,BorderLayout.CENTER);

jPanel.add(banjingLabel);

jPanel.add(rTxt);

jPanel.add(xLabel);

jPanel.add(xField);

jPanel.add(yLabel);

jPanel.add(yField);

jPanel.add(paintBt);

add(jPanel,BorderLayout.NORTH);

paintBt.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

BANJIN=Integer.parseInt(rTxt.getText());

X=Integer.parseInt(xField.getText());

Y=Integer.parseInt(yField.getText());

huaban.repaint();

}

});

}

private void drawCirlce(Graphics g) {

g.setColor(Color.blue);

g.fillOval(X, Y, BANJIN,BANJIN);

}

public static void main(String[] args) {

YuanYiDong frame = new YuanYiDong();

}

public class huaban extends JLabel{

public huaban(){}

public void paint(Graphics g) {

Image image = createImage(getWidth(), getHeight());

drawCirlce(image.getGraphics());

g.drawImage(image, 0, 0, null);

}

}

}

给分吧!

java用什么软件编写代码

JAVA编程常用的软件:

1、Eclipse:

Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。

2、MyEclipse:

MyEclipse是Eclipse的升级版,也是一款功能强大的J2EE集成开发环境,由Genuitec公司发布,提供免费版和收费版。被誉为最好用的Java IDE之一。

MyEclipse 是对Eclipse IDE的扩展,利用它可以在数据库和JavaEE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。

3、IntelliJ IDEA:

IntelliJ IDEA是一款综合的Java 编程环境,被许多开发人员和行业专家誉为市场上最好用的IDE之一,与MyEclipse齐名。

它提供了一系列最实用的的工具组合:智能编码辅助和自动控制,支持J2EE,Ant,JUnit和CVS集成,非平行的编码检查和创新的GUI设计器。

4、NetBeans:

NetBeans IDE是一个屡获殊荣的集成开发环境,可以方便的在Windows、Mac、Linux和Solaris中运行。NetBeans包括开源的开发环境和应用平台,NetBeans IDE可以使开发人员利用Java平台能够快速创建Web、企业、桌面以及移动的应用程序。

5、BlueJ:

BlueJ是一款支持Java编程语言的集成开发环境(IDE)。它原本是为了教育目的而开发的,同时也适合于那些想做小型软件开发的开发人员。它的运行需要JDK(Java开发工具包)的帮助。BlueJ主要是为面向对象的程序设计教学而开发的,因此它的设计不同于其他的开发环境。

参考资料来源:百度百科-BlueJ

参考资料来源:百度百科-IntelliJ IDEA

参考资料来源:百度百科-Netbeans

参考资料来源:百度百科-eclipse

参考资料来源:百度百科-MyEclipse


当前标题:绘图设计软件java代码,java画图程序源代码
分享地址:http://azwzsj.com/article/hedeji.html