import com.sun.awt.AWTUtilities;
import javax.swing.*;
import javax.swing.border.Border;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class Circle {
static int DIV_NUM = 0;
public static void main(String[] args) {
int diam = 800;
if (args != null && args.length >= 1) {
try {
diam = Integer.parseInt(args[0]);
} catch (Exception e) {
}
}
int divNum = 16;
if (args != null && args.length >= 2) {
try {
divNum = Integer.parseInt(args[1]);
} catch (Exception e) {
}
}
if (divNum % 2 != 0) {
return;
}
DIV_NUM = divNum;
JFrame jf = new JFrame();
RoundRectPanel jp = new RoundRectPanel(jf);
jp.setLayout(null);
jp.setOpaque(false);//Panel设置为透明
jp.setBorder(new RoundRectBorder(Color.WHITE));
jf.add(jp);
jf.setUndecorated(true);//去掉标题栏
jf.setBounds(300, 200, diam, diam);
AWTUtilities.setWindowOpaque(jf, false);//JFrame设置为透明
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);
jf.setLocationRelativeTo(null);
ReSizeEvent dg = new ReSizeEvent(jf);
/**添加两个监听器**/
jf.addMouseListener(dg);
jf.addMouseMotionListener(dg);
jf.setAlwaysOnTop(true);
}
}
class RoundRectPanel extends JPanel {
private JFrame jf;
public RoundRectPanel(JFrame jf) {
super();
this.jf = jf;
}
@Override
protected void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(Color.WHITE);
BasicStroke stroke = new BasicStroke(1, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 10.0f, new float[] {10, 10}, 0);
g2d.setStroke(stroke);
int diam = jf.getWidth();
int div = Circle.DIV_NUM / 2;
int length = diam / Circle.DIV_NUM;
int radius = diam / 2;
//横线
for (int i = 1; i < div; i++) {
int divLength = cal(radius, (div - i) * length);
int[] topLeft = new int[] {radius - divLength, length * i};
int[] topRight = new int[] {radius + divLength, length * i};
int[]
java-窗口程序-circle
最新推荐文章于 2022-10-04 16:18:00 发布
本文介绍如何使用Java的Swing库创建一个显示圆形的图形用户界面(GUI)窗口程序。通过Java的图形绘制API,详细讲解了绘制圆心、半径设定以及窗口交互的方法。
摘要由CSDN通过智能技术生成