资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

java画线程序代码 java 画线

java如何在界面中指定坐标画线

setColor:设置画笔的颜色。

成都创新互联公司专注于黎城企业网站建设,成都响应式网站建设公司,商城建设。黎城网站建设公司,为黎城等地区提供建站服务。全流程按需求定制网站,专业设计,全程项目跟踪,成都创新互联公司专业和态度为您提供的服务

drawLine:在指定坐标的(x1,y1)与(x2,y2)两点之间画条线段。

drawRect:以坐标点(x,y)为左上角,绘制指定宽高的矩形边框。

fillRect:以坐标点(x,y)为左上角,绘制指定宽高的矩形区域。

drawRoundRect:以坐标点(x,y)为左上角,绘制指定宽高和指定圆角的圆角矩形边框。

fillRoundRect:以坐标点(x,y)为左上角,绘制指定宽高和指定圆角的圆角矩形区域。

drawOval:以坐标点(x,y)为外切矩形的左上角,绘制指定横纵半径的椭圆轮廓。注意,如果横纵半径的数值相等,此时椭圆就变成了圆形。

fillOval:以坐标点(x,y)为外切矩形的左上角,绘制指定横纵半径的椭圆区域。

drawArc:以坐标点(x,y)为外切矩形的左上角,绘制指定横纵半径和指定角度的圆弧。

fillArc:以坐标点(x,y)为外切矩形的左上角,绘制指定横纵半径和指定角度的扇形。

setFont:设置画笔的字体。

drawString:在当前位置的横纵偏移距离处绘制文本。

此外,Graphics也支持几种简单的管理操作,包括平移画笔、擦除区域、裁剪画布等功能,对应的处理方法说明如下:

translate:平移画笔至坐标点(x,y)。

clearRect:清除某块矩形区域,该矩形以坐标点(x,y)为左上角,且符合指定宽高。

clipRect:裁剪某块矩形区域,该矩形以坐标点(x,y)为左上角,且符合指定宽高。该方法的执行效果与clearRect正好相反,clearRect方法清除了矩形内部的所有图案;而clipRect方法清除了矩形外部的所有图案,只留下矩形内部的图案。

绘制图案与字符串的过程与绘制图像一样,都是重写自定义控件的paint方法,在该方法中调用画笔对象的各种绘图方法。接下来按照之前的图像视图依样画瓢定义一个绘画视图DrawView,变动之处在于绘制控件的paint方法,并据此演示几种图案的实现效果。首先准备绘制一条黑色线段,线段的起点位于控件的左上角,终点位于控件的右下角,则相应的绘制方法示例如下:

1

2

3

g.setColor(Color.BLACK); // 设置画笔的颜色为黑色

// 在指定坐标的(x1,y1)与(x2,y2)两点之间画条线段

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

主界面的代码比较简单,有关绘画视图的调用可参考如下的代码片段:

1

2

3

4

5

Panel panelCenter = new Panel(); // 创建中央面板

DrawView draw = new DrawView(); // 创建一个绘画视图

draw.setSize(360, 180); // 设置绘画视图的宽高

panelCenter.add(draw); // 在中央面板上添加绘画视图

frame.add(panelCenter, BorderLayout.CENTER); // 把中央面板添加到窗口的中间位置

运行修改后的测试代码,弹出的线段绘制窗口界面如下图所示。

接着绘制一个矩形边框,假设边框为红色,则对应的绘制方法如下所示:

1

2

3

g.setColor(Color.RED); // 设置画笔的颜色为红色

// 以坐标点(x,y)为左上角,绘制指定宽高的矩形边框

g.drawRect(10, 10, getWidth() - 20, getHeight() - 20);

同样运行测试界面代码,弹出的矩形绘制窗口界面如下图所示。

再绘制一个绿色的圆角矩形,但它是实心的,此时绘制过程应当调用fillRoundRect方法:

1

2

3

g.setColor(Color.GREEN); // 设置画笔的颜色为绿色

// 以坐标点(x,y)为左上角,绘制指定宽高和指定圆角的圆角矩形区域

g.fillRoundRect(10, 10, getWidth() - 20, getHeight() - 20, 50, 50);

运行主界面的测试代码,弹出的圆角矩形绘制窗口如下图所示。

继续绘制一个蓝色的椭圆轮廓,注意它是空心的,此时绘制过程应当调用drawOval方法:

1

2

3

g.setColor(Color.BLUE); // 设置画笔的颜色为蓝色

// 以坐标点(x,y)为外切矩形的左上角,绘制指定横纵半径的椭圆轮廓

g.drawOval(10, 10, getWidth() - 20, getHeight() - 20);

运行主界面的测试代码,弹出的椭圆绘制窗口界面如下图所示。

还可以绘制一个橙色的扇形,所谓扇形是由某段圆弧连接两端的横纵半径组成,因此它相当于实心的圆弧,此时绘制过程应当调用dfillArc方法:

1

2

3

g.setColor(Color.ORANGE); // 设置画笔的颜色为橙色

// 以坐标点(x,y)为外切矩形的左上角,绘制指定横纵半径和指定角度的扇形

g.fillArc(10, 10, getWidth() - 20, getHeight() - 20, 0, 90);

运行主界面的测试代码,弹出的扇形绘制窗口界面如下图所示。

最后使用画笔绘制几个文字,同时指定这段文字的颜色、字体以及大小,则对应的绘制方法如下所示:

1

2

3

g.setColor(Color.BLACK); // 设置画笔的颜色为黑色

g.setFont(new Font("大号粗体", Font.BOLD, 50)); // 设置画笔的字体

g.drawString("春天花会开", 50, 50); // 在当前位置的横纵偏移距离处绘制文本

运行主界面的测试代码,弹出的文字绘制窗口界面如下图所示。

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简单的画线程序

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画线程序代码 java 画线
当前URL:http://cdkjz.cn/article/ddddjog.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220