可以使用 Graphics2D 和 BasicStroke 画虚线,如下:
import java.awt.BasicStrokeimport java.awt.Color
import java.awt.Graphics
import java.awt.Graphics2D
import javax.swing.JFrame
public class App extends JFrame {
public App() {
this.setSize(400, 400)
this.setLocationRelativeTo(null)
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
}
@Override
public void paint(Graphics g) {
super.paint(g)
Graphics2D g2d = (Graphics2D) g
g2d.setColor(Color.RED)
BasicStroke stroke = new BasicStroke(1, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 10.0f, new float[] { 10, 10 }, 0)
g2d.setStroke(stroke)
g2d.drawLine(50, 100, 300, 100)
}
public static void main(String[] argv) {
new App().setVisible(true)
}
}
运行结果:
java swing中是可以绘制虚线的,主要是使用paint画笔工具绘制,如下代码:
package com.qiu.lin.heimport java.awt.BasicStroke
import java.awt.Color
import java.awt.Dimension
import java.awt.Graphics
import java.awt.Graphics2D
import java.awt.Stroke
import javax.swing.JFrame
import javax.swing.JPanel
public class Ceshi {
public static void main(String[] args) {
JPanel p = new JPanel() {
//使用画笔绘制虚线
public void paint(Graphics gr) {
Graphics2D g = (Graphics2D) gr
g.setBackground(Color.black)
g.clearRect(0, 0, getWidth(), getHeight())
Stroke dash = new BasicStroke(2.5f, BasicStroke.CAP_BUTT,
BasicStroke.JOIN_ROUND, 3.5f, new float[] { 15, 10, },
0f)
g.setStroke(dash)
g.setColor(Color.yellow)
g.drawRect(20, 20, getWidth() - 40, getHeight() - 40)
g.dispose()
}
}
//新建一个窗口
JFrame f = new JFrame("Dash Test")
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
f.setContentPane(p)
p.setPreferredSize(new Dimension(400, 300))
f.pack()
f.setLocationRelativeTo(null)
f.setVisible(true)
}
}
运行结果如下: