我用java做了一個畫圖軟體(畫圖的程序可以實現)

  • 1、用java編寫一個畫圖軟體
  • 2、java 繪圖程序
  • 3、用Java一個簡單的畫圖程序
  • 4、用java編寫一個簡單的畫圖程序。不用複雜

package s;//包名

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(WindowEvent e){

System.exit(0) ; }});

addMouseListener(

new MouseAdapter() {

public void mousePressed(MouseEvent e){

x1=e.getX();

y1=e.getY();} });

addMouseMotionListener(new MouseMotionAdapter() {

public void mouseDragged(MouseEvent e){

x2=e.getX() ;

y2=e.getY() ;

repaint(); }});

}

public void paint(Graphics g)

{

g.drawLine(x1,y1,x2,y2);

x1=x2;

y1=y2;

}

public static void main(String args[])

{

new Test();

}

}

我基於你原來畫圖的方法,添加了事件觸發的命令b[j].setActionCommand(“b” + j);否則你不能在事件響應處理的方法中使用e.getActionCommand(),而且字元串的比較用equals方法比較好。現在可以運行了,你可以看一下:

import java.applet.Applet;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

public class drawing extends Applet implements ActionListener {

Button b[] = new Button[5];

String fontname = “仿宋_GB2312”;

int style = Font.PLAIN;

int size = 24;

int index = 0;

Font myfont;

public void init() {

setSize(700,700);

myfont = new Font(fontname, style, size);

b[0] = new Button(“扇形”);

b[1] = new Button(“圓形”);

b[2] = new Button(“三角形”);

b[3] = new Button(“長方形”);

b[4] = new Button(“橢圓形”);

for (int j = 0; j b.length; j++) {

b[j].setBounds(10, 10, 50, 20);

b[j].addActionListener(this);

b[j].setActionCommand(“b” + j);

add(b[j]);

}

}

public void actionPerformed(ActionEvent e) {

if (e.getActionCommand().equals(“b0”)) {

index = 0;

repaint();

}

if (e.getActionCommand().equals(“b1”)) {

index = 1;

repaint();

}

if (e.getActionCommand().equals(“b2”)) {

index = 2;

repaint();

}

if (e.getActionCommand().equals(“b3”)) {

index = 3;

repaint();

}

if (e.getActionCommand().equals(“b4”)) {

index = 4;

repaint();

}

}

public void paint(Graphics g) {

switch (index) {

case 0:

g.fillArc(0, 60, 80, 60, 30, 120);

break;

case 1:

g.drawOval( 300, 50, 60, 60);

break;

case 2:

Polygon filledPolygon = new Polygon();

filledPolygon.addPoint(380, 50);

filledPolygon.addPoint(380, 110);

filledPolygon.addPoint(450, 90);

g.drawPolygon(filledPolygon);

break;

case 3:

g.drawRect( 200, 50, 80, 60);

break;

case 4:

g.drawOval(100, 50, 80, 60);

break;

default:

g.fillArc(0, 60, 80, 60, 30, 120);

break;

}

}

/*

* public void paint(Graphics g) { g.fillArc( 0, 60, 80, 60, 30, 120);

* //繪製扇形 g.drawOval( 100, 50, 80, 60); g.drawRect( 200, 50, 80, 60);

* g.drawOval( 300, 50, 60, 60); Polygon filledPolygon=new Polygon();

* filledPolygon.addPoint(380,50); filledPolygon.addPoint(380,110);

* filledPolygon.addPoint(450,90); g.drawPolygon(filledPolygon); }

*/

}

下面是我以前做的小程序,希望能給你點幫助!

package menu;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class DaYin extends JFrame implements ActionListener{

public DaYin() {

Container c=this.getContentPane();

c.setLayout(new BorderLayout());

JMenuBar jmb=new JMenuBar();

JMenu jm=null;

jm=new JMenu(“文件”);

jmb.add(jm);

jm=new JMenu(“編輯”);

jmb.add(jm);

jm=new JMenu(“列印”);

JMenuItem jmi=new JMenuItem(“列印預覽”);

jmi.addActionListener(this);

jm.add(jmi);

jmb.add(jm);

jm=new JMenu(“幫助”);

jmb.add(jm);

this.setJMenuBar(jmb);

this.setSize(1024,768);

this.setVisible(true);

this.addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e){

System.exit(0);

}

});

}

public static void main(String[] args) {

new DaYin();

}

public void update(Graphics g){

g.setColor(Color.black);

String title[]={“摘要”,”科目”,”子目或戶名”,”借方金額”,”貸方金額”};

String danwei[]={“千”,”百”,”十”,”萬”,”千”,”百”,”十”,”元”,”角”,”分”};

int csx=200;//列印x的初始坐標

int csy=200;//列印y的初始坐標

int x=csx;

int y=csy;

int a=x+20;//列印字體x的初始坐標

int b=y+20;//列印字體y的初始坐標

int row=7;//一共列印出幾條橫線

int cul=5;//一共列印出幾條豎線

int hangju=30;//線與線之間的縱向間距

int lieju=100;//線與線之間的橫向間距

int yy=hangju*row+y;

int c=yy+20;

g.setFont(new Font(“行楷”,Font.TYPE1_FONT,24));

g.drawString(“記 賬 憑 證”, x+160, y-40);//列印出記賬憑證這幾個字

g.drawLine(x+100, y-30, x+340, y-30);//列印出記賬憑證下面的那條線

g.setFont(new Font(“行楷”,Font.TYPE1_FONT,13));

g.drawString(“年 月 日 第_______號”, x+260, y-10);

//g.drawLine(x+430, y-10, x+470, y-10);

for(int i=0;i=row;i++){

g.drawLine(x, y, cul*lieju+x+25, y);//此循環用於畫出表格的行

if(i==0)

y+=hangju*2;

else

y+=hangju;

}

y=csy;

g.drawLine(x+lieju*3, y+hangju, cul*lieju+x, y+hangju);//列印出第一行半的橫線

for(int j=0;j=cul;j++){

g.drawLine(x, y, x, row*hangju+y);//此循環用於畫出表格的列

x+=lieju;

}

x=csx;

for(int z=0;zcul;z++){

g.setColor(Color.red);//設置顏色

g.setFont(new Font(“”,Font.TYPE1_FONT,13));//設置表頭字體

if(z3)

g.drawString(title[z], a, b+hangju/2);

else

g.drawString(title[z], a, b);//為表格添加表頭

a+=lieju;

}//76-89列印出一個表格形狀

int xx=lieju*3+x+10;

for(int v=0;v=9;v++){

g.drawLine(xx, y+hangju, xx, row*hangju+y+hangju);//此循環用於畫出表格的列

g.setFont(new Font(“”,Font.TYPE1_FONT,11));

g.drawString(danwei[v], xx-10, y+hangju+20);//為表格添加表頭

if(v%2==0)

g.setColor(Color.red);//設置顏色

else

g.setColor(Color.BLUE);//設置顏色

xx+=10;

}

for(int n=0;n9;n++){

g.drawLine(xx, y+hangju, xx, row*hangju+y+hangju);//此循環用於畫出表格的列

g.drawString(danwei[n],xx-10, y+hangju+20);//為表格添加表頭

if(n%2==0)

g.setColor(Color.red);//設置顏色

else

g.setColor(Color.BLUE);//設置顏色

xx+=10;

}

g.drawString(danwei[9],xx-10, y+hangju+20);

g.setColor(Color.black);//設置顏色

for(int i=0;i=1;i++){

g.drawLine(x,yy , cul*lieju+x, yy);//此循環用於畫出表格的行

yy+=hangju;

}

yy=hangju*row+y;

for(int j=0;j=3;j++){

g.drawLine(x, yy, x, (row+1)*hangju+y);//此循環用於畫出表格的列

if(j0){

x+=lieju;

}else{

x+=lieju*3;

}

}//112-128列印出表格的最後一行單元格

x=csx;

g.setFont(new Font(“”,Font.TYPE1_FONT,13));

g.drawString(“合 計”,x+60, c);

g.drawString(“會計主管 記賬 出納 審核 制證”, x+30, yy+50);

g.drawLine(cul*lieju+x+25, y, cul*lieju+x+25, (row+1)*hangju+y);//列印出最後一列

g.drawString(“記”,cul*lieju+x+6, y+15);

g.drawString(“賬”, cul*lieju+x+6, y+35);

g.drawString(“√”, cul*lieju+x+6, y+55);//134-136為最後一列寫入字體

g.drawString(“附”,cul*lieju+x+35, y+75);

g.drawString(“件”, cul*lieju+x+35, y+95);

g.drawString(“張”, cul*lieju+x+35, y+175);//134-136為最後一列後寫入字體

}

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

if(e.getActionCommand().equals(“列印預覽”)){

this.repaint();

}

}

}

使用drawLine()做了一個記賬憑證。

執行點擊”列印”子菜單”列印預覽”就可顯示出我們所畫的”記賬憑證表”

希望這個小程序能夠給你點靈感

import java.awt.*;

import java.awt.event.*;

import java.awt.geom.*;

import javax.swing.*;

//不規則圖形的繪製

public class IrregularShapeDemo extends JFrame {

GeneralPath gPath= new GeneralPath(); //GeneralPath對象實例

Point aPoint;

//構造函數

public IrregularShapeDemo() {

super(“不規則圖形的繪製”); //調用父類構造函數

enableEvents(AWTEvent.MOUSE_EVENT_MASK|AWTEvent.MOUSE_MOTION_EVENT_MASK); //允許事件

setSize(300, 200); //設置窗口尺寸

setVisible(true); //設置窗口可視

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //關閉窗口時退出程序

}

public void paint(Graphics g) { //重載窗口組件的paint()方法

Graphics2D g2D = (Graphics2D)g; //獲取圖形環境

g2D.draw(gPath); //繪製路徑

}

public static void main(String[] args) {

new IrregularShapeDemo();

}

protected void processMouseEvent(MouseEvent e) { //滑鼠事件處理

if(e.getID() == MouseEvent.MOUSE_PRESSED) {

aPoint = e.getPoint(); //得到當前滑鼠點

gPath = new GeneralPath(); //重新實例化GeneralPath對象

gPath.moveTo(aPoint.x,aPoint.y); //設置路徑點

}

}

protected void processMouseMotionEvent(MouseEvent e) { //滑鼠運動事件處理

if(e.getID() == MouseEvent.MOUSE_DRAGGED) {

aPoint = e.getPoint(); //得到當前滑鼠點

gPath.lineTo(aPoint.x, aPoint.y); //設置路徑

gPath.moveTo(aPoint.x, aPoint.y);

repaint(); //重繪組件

}

}

}

原創文章,作者:TPDJ3,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/126967.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
TPDJ3的頭像TPDJ3
上一篇 2024-10-03 23:13
下一篇 2024-10-03 23:13

相關推薦

  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智慧、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • Python程序文件的拓展

    Python是一門功能豐富、易於學習、可讀性高的編程語言。Python程序文件通常以.py為文件拓展名,被廣泛應用於各種領域,包括Web開發、機器學習、科學計算等。為了更好地發揮P…

    編程 2025-04-29
  • Python購物車程序

    Python購物車程序是一款基於Python編程語言開發的程序,可以實現購物車的相關功能,包括商品的添加、購買、刪除、統計等。 一、添加商品 添加商品是購物車程序的基礎功能之一,用…

    編程 2025-04-29
  • 爬蟲是一種程序

    爬蟲是一種程序,用於自動獲取互聯網上的信息。本文將從如下多個方面對爬蟲的意義、運行方式、應用場景和技術要點等進行詳細的闡述。 一、爬蟲的意義 1、獲取信息:爬蟲可以自動獲取互聯網上…

    編程 2025-04-29
  • Vb運行程序的三種方法

    VB是一種非常實用的編程工具,它可以被用於開發各種不同的應用程序,從簡單的計算器到更複雜的商業軟體。在VB中,有許多不同的方法可以運行程序,包括編譯器、發布程序以及命令行。在本文中…

    編程 2025-04-29
  • Python海龜代碼簡單畫圖

    本文將介紹如何使用Python的海龜庫進行簡單畫圖,並提供相關示例代碼。 一、基礎用法 使用Python的海龜庫,我們可以控制一個小海龜在窗口中移動,並利用它的「畫筆」在窗口中繪製…

    編程 2025-04-29
  • Python一元二次方程求解程序

    本文將詳細闡述Python一元二次方程求解程序的相關知識,為讀者提供全面的程序設計思路和操作方法。 一、方程求解 首先,我們需要了解一元二次方程的求解方法。一元二次方程可以寫作: …

    編程 2025-04-29
  • 如何使用GPU加速運行Python程序——以CSDN為中心

    GPU的強大性能是眾所周知的。而隨著深度學習和機器學習的發展,越來越多的Python開發者將GPU應用於深度學習模型的訓練過程中,提高了模型訓練效率。在本文中,我們將介紹如何使用G…

    編程 2025-04-29
  • Web程序和桌面程序的區別

    Web程序和桌面程序都是進行軟體開發的方式,但是它們之間存在很大的區別。本文將從多角度進行闡述。 一、運行方式 Web程序運行於互聯網上,用戶可以通過使用瀏覽器來訪問它。而桌面程序…

    編程 2025-04-29

發表回復

登錄後才能評論