本文目录一览:
- 1、java java.awt.shape
- 2、问一个问题,JAVA上可不可以做出来一个圆形的按钮?
- 3、java设计图形(Shape)类及其子类(Circle、Rectangle)
- 4、用java怎样画椭圆?
java java.awt.shape
画三角形为啥不用drawline呢 - -!Graphics
这是shape的描述
Shape 接口提供了表示一些几何形状的对象的定义。Shape 是由 PathIterator 对象描述的,它可以表示 Shape 的轮廓以及确定该轮廓如何将 2D 平面划分成内点和外点的规则。每个 Shape 对象都提供回调,以获取几何形状的边框,确定点或矩形是部分还是全部位于 Shape 内部,并检索一个描述 Shape 轮廓的轨迹路径的 PathIterator 对象。
内部定义:当且仅当以下条件成立时,才认为某个点位于 Shape 内:
该点完全位于 Shape 边界内,或者
该点恰好位于 Shape 边界上,并且 X 轴正方向上紧邻该点的空间完全处于边界之内,或者
该点恰好在水平边界分段上,并且 Y 轴正方向上紧邻该点的空间完全处于边界之内。
contains 和 intersects 方法将 Shape 内部视为可以填充的封闭区域。这意味着为了确定某个 shape 是否包含矩形或与矩形相交,或者确定某个 shape 是否包含一个点,这些方法将隐式地认为未闭合的 shape 是闭合的。
问一个问题,JAVA上可不可以做出来一个圆形的按钮?
可以自定义的
贴代码给你看下
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Shape;
import java.awt.SystemColor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.Ellipse2D;
import javax.swing.JButton;
import javax.swing.JFrame;
public class CircleButton extends JButton {
Shape shape;
Color bgColor = SystemColor.control;
public CircleButton() {
this("未命名", null);
}
public CircleButton(String label) {
this(label, null);
}
public CircleButton(String label, Color bgColor) {
super(label); // 调用父类构造方法
if (bgColor != null) {
this.bgColor = bgColor;
}
Dimension size = this.getPreferredSize();
size.width = size.height = Math.max(size.width, size.height);
this.setPreferredSize(size); // 设置宽高等距
this.setContentAreaFilled(false); // 不绘制内容区域
this.setBorderPainted(false); // 不绘制边框
this.setFocusPainted(false); // 不绘制焦点状态
}
protected void paintComponent(Graphics g) {
// 如果鼠标按下,isArmed()方法返回true
if (this.getModel().isArmed()) {
g.setColor(java.awt.SystemColor.controlHighlight);
} else {
g.setColor(java.awt.SystemColor.controlShadow);
g.setColor(this.bgColor); // 设置背景颜色
}
g.fillOval(0, 0, this.getSize().width - 1, this.getSize().height - 1); // 绘制圆形背景区域
g.setColor(java.awt.SystemColor.controlShadow); // 设置边框颜色
g.drawOval(0, 0, this.getSize().width - 1, this.getSize().height - 1); // 绘制边框线
super.paintComponent(g);
}
public boolean contains(int x, int y) {
if ((shape == null) || (!shape.getBounds().equals(this.getBounds()))) {
this.shape = new Ellipse2D.Float(0, 0, this.getWidth(), this
.getHeight());
}
return shape.contains(x, y);
}
}
class CircleButtonTest {
public static void main(String[] args) {
JFrame jf = new JFrame("自定义按钮");
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setSize(350, 280);
jf.setLocationRelativeTo(null);
jf.setLayout(new FlowLayout());
Color arrColor[] = new Color[] { Color.blue, Color.black, Color.red,
Color.yellow, Color.green };
for (int i = 0; i 5; i++) {
CircleButton cb = new CircleButton("圆形按钮" + (i+1),arrColor[i]);
jf.getContentPane().add(cb);
cb.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("按钮");
}
});
}
jf.setVisible(true);
}
}
java设计图形(Shape)类及其子类(Circle、Rectangle)
你好,刚好闲着帮你写一个:
Shape类:
public class Shape {
protected Point location;
public Shape(){
}
public double area(){
return 0.0;
}
}
Circle类:
public class Circle extends Shape{
private int r;
public Circle() {
}
public Circle(Point center,int r) {
super.location=center;
this.r = r;
}
public double area() {
return Math.PI*r*r ;
}
}
Rectangle类:
public class Rectangle extends Shape{
private int width;
private int height;
public Rectangle() {
}
public Rectangle(Point o,int width, int height) {
location=o;
this.width = width;
this.height = height;
}
public double area() {
return width*height;
}
}
我这里图方便,在创建圆的时候直接用圆心和半径创建,还有矩形也是用一个点位置和长宽创建,所以还要加一个点类:
public class Point {
public int x;
public int y;
public Point() {
}
public Point(int x, int y) {
this.x = x;
this.y = y;
}
}
用java怎样画椭圆?
你的问题是是使用java画椭圆,可以使用awt和swing类库实现
画椭圆可以通过画矩形及其内切椭圆实现,示例代码如下
如果只需要椭圆,则无需g2.draw(rect);
class DrawPanel extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
// 画矩形
double leftX = 100;
double topY = 100;
double width = 200;
double height = 150;
Rectangle2D rect = new Rectangle2D.Double(leftX, topY, width, height);
g2.draw(rect);
// 画rect的内切椭圆
Ellipse2D ellipse = new Ellipse2D.Double();
ellipse.setFrame(rect);
g2.draw(ellipse);
}
}