问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

请教各位大侠:如何实现在panel中显示不同颜色的圆

发布网友 发布时间:2023-10-10 04:10

我来回答

1个回答

热心网友 时间:2023-09-18 03:15

简单的说就是重新Jpanel的paint方法,然后用参数Graphics对象的fillOval方法画圆,修改数组后调用repaint即可。

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.util.ArrayList;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Test {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

final PaintingPanel panel = new PaintingPanel();
frame.add(panel, BorderLayout.CENTER);

JPanel control = new JPanel(new FlowLayout(FlowLayout.CENTER));
final JTextField xField = new JTextField(5), yField = new JTextField(5);
final JTextField sizeField = new JTextField(5);
final JComboBox combo = new JComboBox(
new Color[] { Color.RED, Color.YELLOW, Color.BLUE, Color.GREEN, }
);
JButton button = new JButton("Add");

button.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
try {
panel.addCircle(new Circle(
Integer.parseInt(xField.getText()),
Integer.parseInt(yField.getText()),
Integer.parseInt(sizeField.getText()),
(Color) combo.getSelectedItem()
));
panel.repaint();
} catch (Exception ex) {}
}
});

control.add(xField);
control.add(yField);
control.add(sizeField);
control.add(combo);
control.add(button);
frame.add(control, BorderLayout.SOUTH);

frame.setBounds(100, 100, 600, 400);
frame.setVisible(true);
}

static class PaintingPanel extends JPanel {
ArrayList<Circle> circles = new ArrayList<Circle>();
public void paintComponent(Graphics g) {
super.paintComponent(g);
for (Circle circle : circles) {
g.setColor(circle.color);
g.fillOval(circle.x - circle.radius,
circle.y - circle.radius,
circle.radius * 2,
circle.radius * 2);
}
}

public void addCircle(Circle c) {
circles.add(c);
}
}

static class Circle {
int x, y, radius;
Color color;
Circle(int x, int y, int r, Color c) {
this.x = x;
this.y = y;
radius = r;
color = c;
}
}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
提升学历选自考好还是成考好 成考和自考的文凭哪个好 2024年成人自考和成人高考哪个更好 家用净水器滤芯类型有哪些 家用净水器什么滤芯好 请问在VB中如何调用多线程? 交强险理赔后第二年上涨吗? 交强险出一次险第二年保费多出多少? 全家人都爱吃的家常菜目录 丽台Quadro P5000专业图形显卡-购买最佳价格 我和我女朋友分手了,可是我们在同一个厂工作,每次看见她我的心都很痛,我该怎么办,只能选择离开吗 分手后前任始终不肯原谅你,怎样向前任道歉利于挽回爱情?12 描写自然风光的成语并造句12 描写大自然优美景物的成语,(9个),再选其中两个造句。3 梦见别人给我买观赏鱼1 描写自然景物的成语并选两个造句30 肖八选择题大家都得多少分 送别人观赏鱼有讲究吗?10 养了13条观赏鱼好吗?1 好朋友(男)想跟我发生关系能说明他是喜欢我的吗? 肖八选择平均分37啥水平 广西平果第三高级中学学费 怎样改变痰湿体质?23 痰湿体质怎么调理呢?11 栀子花虫害的防治方法是什么? 曙光英雄和王者荣耀哪个玩的人多 车子刚喷漆遇到高温天气会不会烤化了 ...丝不挂”坠楼,同在一个房间的杨旭文被骂惨,他现状如何? 每次都是我道歉,他这是认为我会跟我道歉还是真的想分手了呢??...1 我只是生气提了分手,后来我都道歉认错了,我男友为什么还一直不...12 如果情侣分手,女生主动认错,男生还是不理她,那女生是不是应该放弃了??? 肖八多少分才能上70 如何在VB .net中读取txt文件中的一行,并将数据赋值给不同的变量? 同为数码待遇如何 在安防行业发展怎样? 请大家指点。 在不同的人生境遇中,面临着婚姻、职场、生活中的各种危机,该如何面对? 只有一块篮球场地怎样让40个低龄球员有三项不同的训练项目? 曙光英雄比王者好玩吗 《曙光英雄》和《王者荣耀》哪个好 王者和曙光哪个好 羊前猴后马下水,零一二一有玄机,二三两边报佳音,小鼠归来九再现,是什么意思啊,,指的是那个生肖啊, 曙光英雄和王者荣耀哪个好玩 请问我的世界基岩版在switch上如何同屏多人游玩? 怎么画一个标准的五角星 冲压机和液压机的区别和特点有哪些?1 新密市米村镇马寨村属于什么风险区 液压机启动冲压后滑块偶尔出现快速下滑,扎刀是什么原因? 郑州长江路连运路到新密市米村镇马寨村有公交车吗? 冲压机和液压机有什么区别11 怎样正确使用液压冲床冲压 污水处理是违章房子没盖好也给安放管子吗?新密市米村镇马寨村