java的awt包中有没有表示区域的类或者方法,可以传递一个Rectangle
关注:219 答案:2 mip版
解决时间 2021-01-17 08:27
提问者逍遥风
2021-01-17 04:55
java的java.awt包中有没有一个表示区域的类或者方法,就类似于C#中的System.Drawing.Region(Rectangle rect)一样
最佳答案
二级知识专家一个超人
2021-01-17 06:08
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
final class RectPaintDemo extends JFrame {
final static private Dimension SIZE = new Dimension(800, 600);
public String getTitle() {return "RectPaintDemo";}
public Dimension getPreferredSize() {return SIZE;}
public Dimension getMinimumSize() {return SIZE;}
public Dimension getMaximumSize() {return SIZE;}
public Dimension getSize() {return SIZE;}
private Canvas canvas;
private Brush brush;
RectPaintDemo() throws HeadlessException {
init();
attachListeners();
doLay();
setVisible(true);
}
private void init() {
brush = new ShapeBrush();
canvas = new Canvas(brush);
}
private void attachListeners() {
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(1);
}
});
}
private void doLay() {
Container container = getContentPane();
container.add(canvas, BorderLayout.CENTER);
pack();
}
public static void main(String... args) {
System.setProperty("swing.defaultlaf", "com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
SwingUtilities.invokeLater(RectPaintDemo::new);
}
private interface Brush extends Observer {
void paint(Graphics g);
Component getOwner();
void setOwner(Component owner);
}
private static final class ShapeBrush implements Brush {
private Component owner;
private Rectangle contentObj = new Rectangle(20,20,40,30);
public Component getOwner() {
return owner;
}
public void setOwner(Component owner) {
this.owner = owner;
}
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D)g.create();
g2.fillRect(0,0,getOwner().getWidth(),getOwner().getHeight());
g2.translate(50, 50);
g2.rotate(Math.PI / 4);
g2.setColor(Color.YELLOW);
g2.draw(contentObj);
g2.dispose();
}
public void update(Observable o, Object arg) {
if (owner != null) owner.repaint();
}
}
private class Canvas extends JComponent {
private Brush brush;
private Canvas(Brush brush) {
super();
this.brush = brush;
brush.setOwner(this);
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (brush == null) return;
brush.paint(g);
}
}
}
全部回答
1楼魔法小仙子
2021-01-17 06:14
你好!
awt 中也有Rectangle类的
如有疑问,请追问。
我要举报
如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
点此我要举报以上信息!
推荐资讯
大家都在看