重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
import java.awt.Color;
创新互联长期为1000+客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为振兴企业提供专业的成都网站制作、成都做网站、外贸营销网站建设,振兴网站改版等技术服务。拥有10多年丰富建站经验和众多成功案例,为您定制开发。
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class LineDemo extends JFrame {
public LineDemo() {
this.add(new DrawPanel());//窗口添加画线的JPanel
this.setTitle("画线窗口");//窗口标题
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭的操作
this.setLocation(100, 200);//窗口位置
this.setSize(300, 200);//窗口大小
this.setVisible(true);//窗口可见
}
public static void main(String[] args) {
new LineDemo();//创建窗口
}
}
class DrawPanel extends JPanel {//画线的JPanel
@Override
public void paint(Graphics g) {
super.paint(g);
//两点确定一条直线. 三个点(不在同一直线)两两连接就可以成为三角形
g.setColor(Color.RED);//设置第一条线的颜色
g.drawLine(50, 50, 100, 100);//画第一条线 点(50,50) 到点 (100,100)
g.setColor(Color.BLUE);
g.drawLine(50, 50, 50, 150);//画第二条线 点(50,50) 到点 (50,150)
g.setColor(Color.GREEN);
g.drawLine(50, 150, 100, 100);//画第三条线 点(50,150) 到点 (100,100)
}
}
效果图
这个简单
可以调用方法drawline(int x1, int y1, int x2, int y2)
其中(x1, y1), (x2, y2)分别为直线起点和终点的坐标
特意给你写了个小例子,希望能帮到你
***************************************
import javax.swing.*;
import java.awt.*;
public class DrawLine extends JPanel {
public static void main(String[] args) {
JFrame frame = new JFrame("DrawLine");
frame.getContentPane().add(new DrawLine());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
frame.setVisible(true);
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawLine(50, 50, 200, 250);
}
}
****************************
将程序复制到记事本中并改名为DrawLine.java(注意大小写)
然后在命令行中用 CD+文件夹 使命令范围到DrawLine.java的文件夹中
然后执行命令javac DrawLine.java
再执行命令java DrawLine
你会看到结果
我晕,组件要重绘,就使用paintComponent方法吧,没有什么灵活不灵活的
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import javax.swing.BorderFactory;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
public class FrameDemo extends JFrame {
private JPanel contentPane;
TestComponent tc1, tc2;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
FrameDemo frame = new FrameDemo();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public FrameDemo() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(new GridLayout(2, 1, 10, 10));
tc1 = new TestComponent();
tc1.setBorder(BorderFactory.createLineBorder(Color.BLUE));
tc2 = new TestComponent();
tc2.setBorder(BorderFactory.createLineBorder(Color.PINK));
contentPane.add(tc1);
contentPane.add(tc2);
}
}
class TestComponent extends JComponent {
public void paintComponent(Graphics g1) {
Graphics2D g = (Graphics2D) g1;
g.setColor(Color.RED);
g.drawLine(0, 0, this.getWidth(), this.getHeight());
}
}