How To Draw A Line In Java Swing
- Details
- Written past
- Terminal Updated on ten August 2022 | Impress Electronic mail
In this Java graphics tutorial, you volition learn how to describe lines with diverse lawmaking examples.
A line is a graphics primitive that connects two points. In Coffee, to depict a line between two points (x1, y1) and (x2, y2) onto graphics context represented by a Graphicsobject, use the following method:
drawLine(int x1, int y1, int x2, int y2)
If a Graphics2D object is used, the post-obit method is more than object-oriented:
draw(Line2D)
With two implementations of Line2D: Line2D.Double (with double coordinates) and Line2D.Bladder (with float coordinates).
Both methods depict a line using the current graphic attributes (paint colour, stroke, rendering hints, etc). Hither is a quick case (suppose that g2d is a reference of a Graphics2D object):
// draw a line in integer coordinates g2d.drawLine(20, l, 460, 50); // draw a line in double coordinates g2d.draw(new Line2D.Double(21.5d, 199.8d, 459.5d, 199.8d)); // draw a line in float coordinates g2d.draw(new Line2D.Float(21.50f, 232.50f, 459.50f, 232.50f));
The following source lawmaking is a Swing program that draws iii lines onto the graphics context of the JFrame window:
package net.codejava.graphics; import coffee.awt.Graphics; import java.awt.Graphics2D; import java.awt.geom.Line2D; import javax.swing.JFrame; import javax.swing.SwingUtilities; /** * This program demonstrates how to describe lines using Graphics2D object. * @author world wide web.codejava.net * */ public class LinesDrawingExample extends JFrame { public LinesDrawingExample() { super("Lines Drawing Demo"); setSize(480, 200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(nil); } void drawLines(Graphics 1000) { Graphics2D g2d = (Graphics2D) g; g2d.drawLine(120, l, 360, l); g2d.depict(new Line2D.Double(59.2d, 99.8d, 419.1d, 99.8d)); g2d.draw(new Line2D.Bladder(21.50f, 132.50f, 459.50f, 132.50f)); } public void paint(Graphics g) { super.paint(k); drawLines(m); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { new LinesDrawingExample().setVisible(true); } }); } } Hither, the key point is to override the paint() method from the superclass (JFrame) and then that we tin can obtain the graphics context:
public void paint(Graphics thousand) { super.pigment(g); drawLines(g); } And here is the screenshot of the program:
At present, let'southward come across more than complex examples in which we will alter the graphics attributes in order to decorate the lines drawn. Note that the graphics attributes must exist set before drawing the lines.
Setting paint color and thickness for the lines
To specify a specific colour for the line, telephone call setColor(Color) method earlier drawing, for example:
g2d.setColor(Color.RED);
To specify thickness for the line, we tin create a bones stroke with a specified width as follows:
// creates a solid stroke with line width is 2 Stroke stroke = new BasicStroke(2f);
Then gear up this stroke for the graphics context:
g2d.setStroke(stroke);
The previous example is updated as follows:
g2d.setColor(Color.Carmine); // creates a solid stroke with line width is two Stroke stroke = new BasicStroke(2f); g2d.setStroke(stroke); g2d.drawLine(120, l, 360, 50); g2d.setColor(Colour.GREEN); g2d.setStroke(new BasicStroke(4f)); g2d.describe(new Line2D.Double(59.2d, 99.8d, 419.1d, 99.8d)); g2d.setColor(Color.BLUE); g2d.setStroke(new BasicStroke(6f)); g2d.draw(new Line2D.Float(21.50f, 132.50f, 459.50f, 132.50f));
Result:
Drawing dashed lines:
To draw a dashed line, specify a dashing pattern when creating the stroke. For example:
float[] dashingPattern1 = {2f, 2f}; Stroke stroke1 = new BasicStroke(2f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 1.0f, dashingPattern1, ii.0f); g2d.setStroke(stroke1); g2d.drawLine(120, 50, 360, 50); The dashing pattern is formed by alternating betwixt opaque and transparent sections with the widths specified past the float array:
float[] dashingPattern1 = {2f, 2f}; This pattern specifies that the start 2 pixels are opaque; the next 2 are transparent; the next 2 are opaque; and so on…. Hither's the result:
The original example is updated to depict dashed lines as follows:
g2d.setColor(Color.RED); float[] dashingPattern1 = {2f, 2f}; Stroke stroke1 = new BasicStroke(2f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 1.0f, dashingPattern1, 2.0f); g2d.setStroke(stroke1); g2d.drawLine(120, 50, 360, 50); g2d.setColor(Color.GREEN); float[] dashingPattern2 = {10f, 4f}; Stroke stroke2 = new BasicStroke(4f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, one.0f, dashingPattern2, 0.0f); g2d.setStroke(stroke2); g2d.draw(new Line2D.Double(59.2d, 99.8d, 419.1d, 99.8d)); g2d.setColor(Color.BLUE); float[] dashingPattern3 = {10f, 10f, 1f, 10f}; Stroke stroke3 = new BasicStroke(4f, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_MITER, one.0f, dashingPattern3, 0.0f); g2d.setStroke(stroke3); g2d.draw(new Line2D.Float(21.50f, 132.50f, 459.50f, 132.50f)); Here's the result:
Decorating line stop caps
Caps are decorations applied at both ends of a line (solid, unclosed-path line) or nuance segments in a dashed line. The BasicStroke class provides 3 cap styles: CAP_SQUARE (default), CAP_BUTT and CAP_ROUND. The following example creates 3 strokes with different cap styles:
// this stroke with default CAP_SQUARE and JOIN_MITER Stroke stroke1 = new BasicStroke(12f); // this stroke with CAP_BUTT Stroke stroke2 = new BasicStroke(12f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER); // this stroke with CAP_ROUND Stroke stroke3 = new BasicStroke(12f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER);
And the following lawmaking snippet draws three lines with these strokes:
g2d.setStroke(stroke1); g2d.drawLine(30, 60, 450, 60); g2d.setStroke(stroke2); g2d.drawLine(30, 100, 450, 100); g2d.setStroke(stroke3); g2d.drawLine(30, 140, 450, 140);
Here's the result:
Decorating line joins
Joins are decorations applied at intersections between lines. The BasicStroke course provides three join styles: JOIN_MITER (default), JOIN_BEVEL and JOIN_ROUND. The following example creates three strokes with dissimilar join styles:
// this stroke with default CAP_SQUARE and JOIN_MITER Stroke stroke1 = new BasicStroke(12f); // this stroke with JOIN_BEVEL Stroke stroke2 = new BasicStroke(12f, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_BEVEL); // this stroke with JOIN_ROUND Stroke stroke3 = new BasicStroke(12f, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_ROUND);
And the following lawmaking snippet draws three rectangles using lines to demonstrate the concept of join decorations:
// draws the beginning rectangle with a stroke of JOIN_MITER g2d.setStroke(stroke1); g2d.drawLine(thirty, 60, 120, sixty); g2d.drawLine(30, 60, thirty, 150); g2d.drawLine(120, sixty, 120, 150); g2d.drawLine(120, lx, 120, 150); g2d.drawLine(30, 150, 120, 150); // draws the second rectangle with a stroke of JOIN_BEVEL g2d.setStroke(stroke2); g2d.drawLine(30 + 120, sixty, 120 + 120, threescore); g2d.drawLine(30 + 120, 60, 30 + 120, 150); g2d.drawLine(120 + 120, 60, 120 + 120, 150); g2d.drawLine(120 + 120, 60, 120 + 120, 150); g2d.drawLine(30 + 120, 150, 120 + 120, 150); // draws the third rectangle with a stroke of JOIN_ROUND g2d.setStroke(stroke3); g2d.drawLine(thirty + 240, lx, 120 + 240, lx); g2d.drawLine(30 + 240, lx, 30 + 240, 150); g2d.drawLine(120 + 240, lx, 120 + 240, 150); g2d.drawLine(120 + 240, 60, 120 + 240, 150); g2d.drawLine(thirty + 240, 150, 120 + 240, 150);
Here's the result:
API References:
- Graphics2D Javadoc
- BasicStroke Javadoc
- Line2D.Double Javadoc
- Line2D.Float Javadoc
Other Coffee Graphics Tutorials:
- How to add watermark for images using Coffee
- How to resize images using Java
- How to catechumen image format using Java
- How to depict prototype with automatic scaling in Java
- How to capture screenshot programmatically in Java
- How to describe text vertically with Java Graphics2D
- How to Create Zoomable User Interface Coffee Programs with Piccolo2D Framework
- Drawing Rectangles Examples with Java Graphics2D
- Using JFreechart to draw line nautical chart with CategoryDataset
- Using JFreechart to draw XY line chart with XYDataset
Near the Writer:
Nam Ha Minh is certified Coffee developer (SCJP and SCWCD). He started programming with Java in the time of Java 1.4 and has been falling in dearest with Java since then. Brand friend with him on Facebook and sentry his Java videos you lot YouTube.
Add comment
Source: https://www.codejava.net/java-se/graphics/drawing-lines-examples-with-graphics2d
Posted by: fergusoncend1944.blogspot.com

0 Response to "How To Draw A Line In Java Swing"
Post a Comment