畫線功能java代碼 java畫線段

java簡單的畫線程序

import java.awt.*;

網站建設哪家好,找創新互聯建站!專注于網頁設計、網站建設、微信開發、微信小程序開發、集團企業網站建設等服務項目。為回饋新老客戶創新互聯還提供了莆田免費建站歡迎大家使用!

import java.awt.event.*;

import java.util.ArrayList;public class DrawLine extends Frame

implements WindowListener

{

static ArrayList lbArray; DrawLine(){

setBounds(150,150,300,300);

setVisible(true);

Label lb0=new Label("Hello");

addWindowListener(this);

add(lb0);

lb0.setBounds(50,30,40,20);

Label lb1=new Label("World!");

add(lb1);

lb1.setBounds(50,90,40,20); Label lb2=new Label("Java");

add(lb2);

lb2.setBounds(50,150,40,20);

lbArray.add(lb0);

lbArray.add(lb1);

lbArray.add(lb2);

repaint(); }

public void windowClosed(WindowEvent w)

{

System.exit(0);

}

public void windowClosing(WindowEvent w)

{

dispose();

}

public void windowOpened(WindowEvent e) {}

public void windowIconified(WindowEvent e) {}

public void windowDeiconified(WindowEvent e) {}

public void windowActivated(WindowEvent e) {}

public void windowDeactivated(WindowEvent e) {}

public void paint(Graphics g)

{

super.paint(g); if(lbArray.size()=1)

{

g.setColor(Color.red);

int x1,y1,x2,y2;

Label lb=(Label)lbArray.get(0);

Rectangle rc=lb.getBounds();

x1=rc.x+rc.width/2;

y1=rc.y+rc.height/2;

for(int i=1;ilbArray.size();i++)

{

lb=(Label)lbArray.get(i);

rc=lb.getBounds();

x2=rc.x+rc.width/2;

y2=rc.y+rc.height/2;

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

x1=x2;

y1=y2;

}

}

} public static void main(String[] args){

lbArray=new ArrayList(10);

new DrawLine();

}

} 終于做了個滿足你要求的東西。要知道我昨天和你說過我并不常用Java。趕快采納吧。

java 最簡單的畫線演示程序

對于你拖動的時候會描出很多線的問題,可以在public void paint(Graphics g)函數中,用super.paint(g);語句解決,就象下面我的程序一樣。

最簡單的畫線演示程序如下:

import java.awt.Graphics;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import java.awt.event.MouseMotionListener;

import javax.swing.JFrame;

import javax.swing.JPanel;

public class DrawLine extends JFrame implements MouseListener,MouseMotionListener{

private int x0=0,y0=0,x=0,y=0;

JPanel jp=new JPanel();

DrawLine(){

jp.addMouseListener(this);

jp.addMouseMotionListener(this);

add(jp);

setSize(300, 300);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setVisible(true);

}

public void paint(Graphics g){

super.paint(g);

g.drawLine(x0, y0, x, y);

}

public static void main(String[] args) {

new DrawLine();

}

public void mouseDragged(MouseEvent arg0) {

x=arg0.getXOnScreen();

y=arg0.getYOnScreen();

repaint();

}

public void mouseMoved(MouseEvent arg0) {}

public void mouseClicked(MouseEvent arg0) {}

public void mouseEntered(MouseEvent arg0) {}

public void mouseExited(MouseEvent arg0) {}

public void mousePressed(MouseEvent arg0) {

x0=arg0.getXOnScreen();

y0=arg0.getYOnScreen();

}

public void mouseReleased(MouseEvent arg0) {

x=arg0.getXOnScreen();

y=arg0.getYOnScreen();

repaint();

}

}

java簡單畫線程序

這個覆蓋 paint 方法就可以了。

我幫你寫好了,我采用的方法是:把內容畫在一個 JPanel 里,然后用 setContentPane 添加到了 JFrame 上,這樣做是因為定位問題:JFrame 有邊框,繪制組件的時候坐標是算邊框占位的,但是 drawLine 的時候是不算的,為了統一算邊框,就用了這個辦法。

下面是兩個文件,第一個 MyFrame 是一個完整的工具,MyFrame 因為繼承了 JFrame,用起來和 JFrame 一樣用,另外提供了一個接口,addComponent(JComponent) 方法可以向里添加組件,會自動連線的。你只要 import ui 就可以用了。

然后第二個是測試類,可以看到我在 setVisible 之后添加的組件,它也能正確顯示,證明 addComponent 方法可以隨時調用,不用另外刷新。

---------------------------- MyFrame.java -----------------------------

package ui;

import java.awt.*;

import javax.swing.*;

import java.util.*;

class MyPanel extends JPanel {

private VectorJComponent comps;

public MyPanel () {

comps = new VectorJComponent();

setLayout(null);

}

public void paint (Graphics g) {

g.setColor(Color.BLACK);

for (int i=1; icomps.size(); i++) {

g.drawLine(comps.get(0).getLocation().x+comps.get(0).getSize().width/2,

comps.get(0).getLocation().y+comps.get(0).getSize().height/2,

comps.get(i).getLocation().x+comps.get(i).getSize().width/2,

comps.get(i).getLocation().y+comps.get(i).getSize().height/2);

}

super.paintComponents(g);

}

public void addComponent (JComponent comp) {

comp.setOpaque(true);

comps.add(comp);

add(comp);

repaint();

}

}

public class MyFrame extends JFrame {

private MyPanel mp;

public MyFrame () {

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

mp = new MyPanel();

setContentPane(mp);

}

public void addComponent (JComponent comp) {

mp.addComponent(comp);

}

}

---------------------------- TestMyFrame.java -----------------------------

import ui.*;

import javax.swing.*;

import javax.swing.border.*;

public class TestMyFrame {

public static void main (String args[]) {

MyFrame mf = new MyFrame();

mf.setSize(500, 500);

mf.setLocationRelativeTo(null);

mf.setVisible(true);

testAddComponent(mf);

}

public static void testAddComponent (MyFrame mf) {

JLabel l1 = new JLabel("l1");

l1.setBorder(new EtchedBorder());

l1.setBounds(200, 100, 20, 20);

mf.addComponent(l1);

JLabel l2 = new JLabel("l2");

l2.setBounds(100, 150, 20, 20);

l2.setBorder(new EtchedBorder());

mf.addComponent(l2);

JLabel l3 = new JLabel("l3");

l3.setBounds(150, 150, 20, 20);

l3.setBorder(new EtchedBorder());

mf.addComponent(l3);

JLabel l4 = new JLabel("l4");

l4.setBounds(200, 150, 20, 20);

l4.setBorder(new EtchedBorder());

mf.addComponent(l4);

}

}

本文名稱:畫線功能java代碼 java畫線段
網頁鏈接:http://m.kartarina.com/article42/hjggec.html

成都網站建設公司_創新互聯,為您提供動態網站手機網站建設網站內鏈品牌網站制作網站設計響應式網站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都seo排名網站優化
主站蜘蛛池模板: 国产强伦姧在线观看无码| 无码熟妇人妻在线视频| 亚洲精品无码成人| 69久久精品无码一区二区| 精品无码一区二区三区水蜜桃| 日本无码小泬粉嫩精品图| 亚洲va中文字幕无码久久不卡| 西西午夜无码大胆啪啪国模 | 高清无码午夜福利在线观看| 久久久g0g0午夜无码精品| 中文有码vs无码人妻| 久久亚洲AV成人无码国产最大| 国产亚洲情侣一区二区无码AV| 亚洲av日韩av无码| 免费无码又爽又刺激高潮的视频| 午夜亚洲AV日韩AV无码大全| 亚洲成A人片在线观看无码3D| 国模无码视频一区| 日韩国产精品无码一区二区三区| 久久亚洲国产成人精品无码区 | 免费无码不卡视频在线观看| 亚洲AV永久青草无码精品| 无码乱码观看精品久久| 亚洲av中文无码字幕色不卡| 日韩av无码中文字幕| 国产成人精品一区二区三区无码| 无码丰满熟妇浪潮一区二区AV| 人妻无码中文久久久久专区| 国产精品亚洲аv无码播放| 国产AV无码专区亚洲AV手机麻豆 | 国产成人无码综合亚洲日韩 | 中出人妻中文字幕无码| 无码欧精品亚洲日韩一区夜夜嗨 | 亚洲成a人片在线观看无码| 亚洲国产91精品无码专区| 国产AV无码专区亚洲AV琪琪| 精品久久久久久久无码久中文字幕 | 中文字幕无码不卡在线| 日韩美无码五月天| 国产精品无码翘臀在线观看| 精品无码成人网站久久久久久|