求Java画图版,能画正多边形的代码!

作者&投稿:肇悦 (若有异议请与网页底部的电邮联系)
写一个java程序,使其画一个正方形并改变它的颜色(每秒钟改变一次)。求完整代码谢谢~

按照你的要求,编写的Java程序如下
import java.awt.Color;import java.awt.Graphics;import javax.swing.JFrame;public class F extends JFrame implements Runnable{ Color[] colors = {Color.red,Color.orange,Color.yellow,Color.green,Color.cyan,Color.blue,Color.magenta,Color.black}; int i=0; F(){ setTitle("变色正方形"); setSize(400, 400); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); setVisible(true); } public void paint(Graphics g){ g.setColor(colors[i]); g.drawRect(100,100,200,200); } @Override public void run() { while(true){ try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } if(i<7) i++; else i=0; repaint(); } } public static void main(String[] args) { F f=new F(); Thread t=new Thread(f); t.start(); }}运行结果


60 10 , 35 90, 110 40 以此类推卅。。。int[] x是装的X的所有坐标,y[]亦如此。 对应下就好了

public class MiniDraw implements ActionListener, MouseListener{ // Fields private JFrame frame = new JFrame("MiniDraw");
private DrawingCanvas canvas = new DrawingCanvas(); private JButton colorButton; // the button for colour, so we can change its background to the current color.
private JTextField textField; // the field for entering text to put on the canvas // fields for recording the information needed to perform the next action
private enum Action {Line,Rect, Oval, Triangle, Text, Dot, Move, Delete, Push, Pull}; private int pressedX; //where the mouse was pressed
private int pressedY; //where the mouse was pressed
private Action currentAction = Action.Line;
private Color currentColor = Color.black; private List<Shape> shapes = new ArrayList <Shape>();

/** Constructor sets up the GUI. */
public MiniDraw(){
frame.setSize(800,600); //The graphics area
canvas.addMouseListener(this);
frame.getContentPane().add(canvas, BorderLayout.CENTER); //The buttons
JPanel topPanel = new JPanel( );
frame.getContentPane().add(topPanel, BorderLayout.NORTH);
JPanel botPanel = new JPanel( );
frame.getContentPane().add(botPanel, BorderLayout.SOUTH);
addButton(topPanel, "New");
addButton(topPanel, "Open");
addButton(topPanel, "Save");
addButton(topPanel, "Delete");
addButton(topPanel, "Move");
colorButton = addButton(topPanel, "Color"); // remember the button so we can change its colour
addButton(topPanel, "Push");
addButton(topPanel, "Pull");
addButton(topPanel, "Reverse");
addButton(topPanel, "Quit"); botPanel.add(new JLabel("Shapes: "));
addButton(botPanel, "Line");
addButton(botPanel, "Rect");
addButton(botPanel, "Oval");
addButton(botPanel, "Triangle");
addButton(botPanel, "Dot");
addButton(botPanel, "Text");
textField = new JTextField("Enter text", 12);
botPanel.add(new JLabel(" : "));
botPanel.add(textField); frame.setVisible(true);
} /** Utility method to make new button and add it to the panel
Returns the button, in case we need it. */
private JButton addButton(JPanel panel, String name){
JButton button = new JButton(name);
button.addActionListener(this);
panel.add(button);
return button;
} /** Respond to button presses */ public void actionPerformed(ActionEvent e){
String button = e.getActionCommand();
//System.out.printf("Button: %s\n", button); //for debugging
if (button.equals("New") )
newDrawing();
else if (button.equals("Open") )
openDrawing();
else if (button.equals("Save") )
saveDrawing();
else if (button.equals("Color") )
selectColor();
else if (button.equals("Reverse") )
reverseDrawing();
else if (button.equals("Quit") )
frame.dispose();
else{ //
currentAction = Action.valueOf(button); // converts the String to an Action.
}
} /** Sets the current color.
* Also changes the color of the Color button and sets the background color of the canvas */
private void selectColor(){
Color newColor = JColorChooser.showDialog(frame,"Choose Color for new shapes", currentColor);
if (newColor!=null){
currentColor=newColor;
colorButton.setBackground(currentColor);
}
} // Respond to mouse events
/** When mouse is pressed, remember the position in order to construct the Shape when
* the mouse is released. */
public void mousePressed(MouseEvent e) {
int x = e.getX(); int y = e.getY();
//System.out.printf("Pressed at (%d, %d)\n", x, y); //for debugging
pressedX = x;
pressedY = y;
} /** When the Mouse is released, depending on the currentAction,
* either construct the shape that was being drawn, or perform the
* action (delete or move) on the shape under the point where the mouse was pressed.*/

public void mouseReleased(MouseEvent e) {
int x = e.getX(); int y = e.getY();
//System.out.printf("Released at (%d, %d)\n", x, y); //for debugging
if (currentAction==Action.Move)
moveShape(pressedX, pressedY, x, y);
else if (currentAction==Action.Delete)
deleteShape(x, y);
else if (currentAction==Action.Push)
pushShapeBackward(x, y);
else if (currentAction==Action.Pull)
pullShapeForward(x, y);
else
addShape(pressedX, pressedY, x, y);
} public void mouseClicked(MouseEvent e) {} //needed to satisfy interface
public void mouseEntered(MouseEvent e) {} //needed to satisfy interface
public void mouseExited(MouseEvent e) {} //needed to satisfy interface
// Helper methods for implementing the button and mouse actions

/** Start a new drawing. */
public void newDrawing(){
shapes = new ArrayList<Shape>();
canvas.clear();
}
/** Open a file, and read all the shape descriptions into the current drawing. */
public void openDrawing(){
String fname = FileChooser.open();
if (fname==null) return;
try {
Scanner file = new Scanner(new File(fname));
//System.out.printf("Opening file %s\n", fname);
shapes = new ArrayList<Shape>();
while (file.hasNext()){
String shapetype = file.next().toLowerCase();
if (shapetype.equals("oval"))
shapes.add(new Oval(file));
else if (shapetype.equals("rectangle"))
shapes.add(new Rectangle(file));
if (shapetype.equals("line"))
shapes.add(new Line(file));
if (shapetype.equals("textshape"))
shapes.add(new TextShape(file));
else if (shapetype.equals("triangle"))
shapes.add(new Triangle(file));
else if (shapetype.equals("dot"))
shapes.add(new Dot(file));
}
render();
}
catch(IOException e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
} /** Save the current drawing to a file. */
public void saveDrawing(){
String fname =FileChooser.save();
if ( fname == null )
return;
try{
PrintStream f = new PrintStream( new File( fname ));
for ( Shape shape : shapes )
f.println( shape.toString());
f.close ();
}
catch(IOException ex){
System.out.println(ex.getMessage());
ex.printStackTrace();
}
}
/** Returns the shape under the position (x y), or null if no such shape */
public Shape findShape(int x, int y){
for (int i = shapes.size()-1; i>=0; i--){ // must go backwards, so can't use foreach
Shape shape = shapes.get(i);
if (shape.pointOnShape(x, y))
return shape;
}
return null; // no shape found at position
}
/** Moves the shape that was under the mousePressed position (pressedX, pressedY)
to where the mouse was released.
Ie, move it by (newX-pressedX) and (newY-pressedY)
*/
public void moveShape(int fromX, int fromY, int toX, int toY){
//System.out.printf("Moving shape under (%d, %d) to (%d, %d)\n", pressedX, pressedY, newX, newY); //for debugging
Shape shape = findShape(fromX, fromY);
if (shape!= null)
shape.moveBy((toX-fromX), (toY-fromY));
render();
} /** Deletes the shape that was under the mouseReleased position (x, y)
*/
public void deleteShape(int x, int y){ for ( Shape shape : shapes) {
if ( shape.pointOnShape(x, y ))
shapes.remove ( shape );
}
render();
}
/** Pull the shape under the mouse one position closer to the "front"
of the drawing */
public void pullShapeForward(int x, int y){
// System.out.printf("Pulling shape under (%d, %d) forward\n", x, y); //for debugging
// YOUR CODE HERE
Shape shape = findShape( x, y );
if (shape!=null ) {
int index = shapes.indexOf(shape);
if ( index< shapes.size()-1){
shapes.remove(index);
shapes.add( index+1,shape);
}
render();

}
}
/** Push the shape under the mouse one position further from the "front"
of the drawing */
public void pushShapeBackward(int x, int y){
//System.out.printf("Pushing shape under (%d, %d) backward\n", x, y); //for debugging
// YOUR CODE HERE
Shape shape = findShape(x, y );
if ( shape!=null ){
int index = shapes.indexOf(shape);
if( index > 0 )
shapes.remove( index);
shapes.add( index-1, shape);
}
render();

}

/** Reverse the order of the shapes in the drawing */
public void reverseDrawing(){ List<Shape>temp = new ArrayList<Shape>();
while ( shapes.size() > 0 ) {
temp.add ( shapes.remove(shapes.size()-1));
}
shapes= temp;
render();

}
/** Construct a new Shape object of the appropriate kind (depending on currentAction)
Uses the appropriate constructor of the Line, Rectangle, Oval, TextShape, or Triangle classes.
adds the shape it to the collection of shapes in the drawing, and
renders the shape on the canvas */
public void addShape(int x1, int y1, int x2, int y2){
//System.out.printf("Drawing shape %s, at (%d, %d)-(%d, %d)\n", currentAction, pressedX, pressedY, x, y); //for debugging
Shape shape = null;
if (currentAction==Action.Line)
shapes.add(new Line(x1, y1, x2, y2, currentColor));
if (currentAction==Action.Triangle)
shapes.add(new Triangle(x1, y1, x2, y2, currentColor));
if (currentAction==Action.Dot)
shapes.add(new Dot(x2, y2, currentColor));
else if (currentAction==Action.Text)
shapes.add(new TextShape(x2, y2, textField.getText(), currentColor));
else{
int left= Math.min(x1, x2);
int top= Math.min(y1, y2);
int width= Math.abs(x1 - x2);
int height= Math.abs(y1 - y2);
if (currentAction==Action.Rect)
shapes.add(new Rectangle(left, top, width, height, currentColor));
else if (currentAction==Action.Oval)
shapes.add(new Oval(left, top, width, height, currentColor));
}
render();
} public void render(){
canvas.clear(false);
for (Shape shape : shapes){
shape.render(canvas);
}
canvas.display();
} public static void main(String args[]){
new MiniDraw();
}}

////保存一个pb.java文件直接编译执行
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import java.awt.geom.*;
import java.io.*;

class Point implements Serializable
{
int x,y;
Color col;
int tool;
int boarder;

Point(int x, int y, Color col, int tool, int boarder)
{
this.x = x;
this.y = y;
this.col = col;
this.tool = tool;
this.boarder = boarder;
}
}

class paintboard extends Frame implements ActionListener,MouseMotionListener,MouseListener,ItemListener
{
int x = -1, y = -1;
int con = 1;//画笔大小
int Econ = 5;//橡皮大小

int toolFlag = 0;//toolFlag:工具标记
//toolFlag工具对应表:
//(0--画笔);(1--橡皮);(2--清除);
//(3--直线);(4--圆);(5--矩形);

Color c = new Color(0,0,0); //画笔颜色
BasicStroke size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);//画笔粗细
Point cutflag = new Point(-1, -1, c, 6, con);//截断标志

Vector paintInfo = null;//点信息向量组
int n = 1;

FileInputStream picIn = null;
FileOutputStream picOut = null;

ObjectInputStream VIn = null;
ObjectOutputStream VOut = null;

// *工具面板--画笔,直线,圆,矩形,多边形,橡皮,清除*/
Panel toolPanel;
Button eraser, drLine,drCircle,drRect;
Button clear ,pen;
Choice ColChoice,SizeChoice,EraserChoice;
Button colchooser;
Label 颜色,大小B,大小E;
//保存功能
Button openPic,savePic;
FileDialog openPicture,savePicture;

paintboard(String s)
{
super(s);
addMouseMotionListener(this);
addMouseListener(this);

paintInfo = new Vector();

/*各工具按钮及选择项*/
//颜色选择
ColChoice = new Choice();
ColChoice.add("black");
ColChoice.add("red");
ColChoice.add("blue");
ColChoice.add("green");
ColChoice.addItemListener(this);
//画笔大小选择
SizeChoice = new Choice();
SizeChoice.add("1");
SizeChoice.add("3");
Size


关于java用paint()画图的问题
public void paint(Graphics g){ g.setColor(Color.red);\/\/设置为红色 ...} 这样就行了

简单java画图
主要原因是在Frame还没有show之前,所有Frame上的组件是无法得到Graphics的,因为这是Graphics还不存在。如果把“fr.setVisible(true);”调换到fr.getGraphics().drawLine(0,0,100,100);前面的话,就不会报错了,但是,仍然有问题,你看不到想要的那条线。原因在于:getGraphics()得到的 Graphics 上面 ...

JAVA中画图怎么让前后画的线条不连起来,可以通过摁键盘上的键退出画板...
package bdzhidao;import java.awt.*;import javax.swing.*;import java.awt.event.*;public class DrawingBoard extends JFrame{ int[] xPoint={200,300,500}; int[] yPoint={100,180,240}; static int m=15; static Color color=new Color(255,0,0); private JComboBox jcb2=new JCombo...

java 聊天软件如何支持图片发送??紧急!
可以松开指头了,让已经变色的鼠标箭头自如地拖拉任意收放,随心所欲地切割菜单里自己需要的画面。截完后请运行画图程序,粘贴,保存即可。(注意:如果您此刻双击是不会显示抓出来的图的,它是保存在内存里的剪贴版里,所以请直接粘贴就可以了。)②动态影片截图 直接点“静态影片截图”,或使用快捷键“...

用java 2d 画图时,超出边界,怎么用Jscrollpane显示出来
建一个滚动窗口,在上面添加画板,画板大小设为变量就行了,当超出范围时就会有滚动条。

为什么我的设计的一个java画图程序(调用图片),画出的图有时候有有时候...
牛叉

JAVA中的一个小问题
这个教程向您介绍java的泛型(generic)。你可能熟悉其他语言的泛型,最著名的是C++的模板(templates)。 ...因为我们不知道c的元素类型,我们不能向其中添加对象。 add方法有类型参数E作为集合的元素类型。我们传...回到我们的画图问题,假定我们想要保持画图请求的历史记录。我们可以把历史记录保存在Shape类的一个静态成员...

java 在已有的图片上画图
\/\/读取图片文件,得到BufferedImage对象 BufferedImage bimg=ImageIO.read(new FileInputStream("图片文件路径"));\/\/得到Graphics2D 对象 Graphics2D g2d=(Graphics2D)bimg.getGraphics();\/\/设置颜色和画笔粗细 g2d.setColor(Color.RED);g2d.setStroke(new BasicStroke(3));\/\/绘制图案或文字 g2d....

求手机画图软件,要求同时满足:1、Java程序;2、支持屏幕手写笔手绘;3...
我用过的E680I有这个软件,不过我用了一下就再没用过了.你要的话发个给你,请留下你的邮箱。。

关于JAVA的Graphics2D画图的问题,详情见问题补充
class DrawDemo extends JFrame{ DrawDemo(){ super("简易画图工具");this.setSize(600,600);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setResizable(false);Canvas ca=new Canvas();Container c=this.getContentPane();\/\/c.setLayout(null);c.add(ca);\/\/ca.setBounds(50, 30,...

贞丰县18047404439: 求Java画图版,能画正多边形的代码! -
养宽利复: ////保存一个pb.java文件直接编译执行 import java.applet.*; import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; import java.awt.geom.*; import java.io.*;class Point implements Serializable { int x,y; Color col; int tool; int ...

贞丰县18047404439: 如何用java画 正n边形 -
养宽利复: import java.awt.BorderLayout; import java.awt.Graphics; import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; import javax.swing.JFrame; import javax.swing....

贞丰县18047404439: 编写代码,Java如何绘制多边形?
养宽利复:import java.awt. *; public class DrawPolygon extends Frame { public static void main(String args []) { DrawPolygon frame=new DrawPolygon(); frame.setSize(200,200); frame.setVisible(true); } public void paint(Graphics g) { int[] xPoints1={10,30,40,...

贞丰县18047404439: java怎么绘制一个正方形? -
养宽利复: application编程,用java怎么画一个蓝色的正方形(最好实心和空心的各画一个)完整的程序如下:import java.awt.Color;import java.awt.Graphics;import javax.swing.JFrame;public class H...

贞丰县18047404439: 求java简单的画图程序
养宽利复: public interface Drawable{ public void draw();}class DrawPoint implements Drawable{ public void draw(){ System.out.println("draw a point"); }}同理可得到画其他图形的类.

贞丰县18047404439: 求个JAVA画图程序 -
养宽利复: //:P.java//用法,将所有内容保存到文件 P.java 编译运行就行了,鼠标点到哪里,矩形就画到哪里!import java.awt.*; import java.awt.event.*; import javax.swing.*; public class P { public static void main(String[] args) { new FrameX().setVisible(true); }...

贞丰县18047404439: java 画多边形.. -
养宽利复: 自己查api,Graphics类有个花封闭曲线的方法,传进去一组x坐标,一组Y坐标 要么用AlphaComposite做颜色混合,选择src_over SRC_OVER混合规则把源像素(新的像素)组合到目的像素(原有像素)上面,这样重叠的部分就只显示了源像素的颜色.如果你开始渲染一个蓝色矩形,然后把一个红色矩形和它部分重叠,则重叠的部分会被渲染为红色.换句话说最后被渲染成的颜色将在最上面显示出来.

贞丰县18047404439: 求Java 实现绘制图形并移动代码 -
养宽利复: 代码如下:import javax.microedition.lcdui.Canvas;import javax.microedition.lcdui.Display;import javax.microedition.lcdui.Graphics;import javax.microedition.midlet.MIDlet;import javax.microedition.midlet.MIDletStateChangeException;public class Zfx...

贞丰县18047404439: java画多边形和三角形 -
养宽利复: 好像不难 不过我不是用java写的 思路大概就这样 self.list = [] def onStart(self,event):self.list.append((event.x,event.y)) def onPolygondraw(self): i=askinteger("问题", "你要几边形啊", minvalue=1, maxvalue=7) polygon=[] for i in range(i): polygon.append(self.list[-i-1]) self.panel.create_polygon(polygon)

贞丰县18047404439: 求个JAVA画图程序
养宽利复: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Test extends JFrame {int x1,y1,x2,y2; public Test(){setVisible(true);setSize(300,300) ;addWindowListener(new WindowAdapter() {public void windowClosing(...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网