java – 在这个游戏中使用哪个布局管理器?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 在这个游戏中使用哪个布局管理器?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2333字,纯文字阅读大概需要4分钟。
内容图文
![java – 在这个游戏中使用哪个布局管理器?](/upload/InfoBanner/zyjiaocheng/746/e88cbb20fc3e42a894157b5c2d83ad65.jpg)
在这个游戏中使用哪个布局管理器?
解决方法:
恕我直言,使用布局和组件不是一个很好的解决方案,个人而言,我倾向于自定义绘画解决方案.
从一件作品的基本概念开始,它需要知道它的位置,它的大小,它的颜色,能够自己画画并且可能是可重新定位的,类似……
public interface Piece {
public Rectangle getBounds();
public Color getColor();
public void setLocation(Point point);
public void paint(Graphics2D g2d);
}
从这里,你可以定义你需要的形状,例如……
public abstract class AbstractPiece implements Piece {
private Rectangle bounds;
private Color color;
@Override
public void setLocation(Point point) {
bounds.setLocation(point);
}
@Override
public Rectangle getBounds() {
return bounds;
}
@Override
public Color getColor() {
return color;
}
public void setBounds(Rectangle bounds) {
this.bounds = bounds;
}
public void setColor(Color color) {
this.color = color;
}
}
public class Square extends AbstractPiece {
public Square(Point location, int size, Color color) {
Rectangle bounds = new Rectangle();
bounds.setLocation(location);
bounds.setSize(size, size);
setBounds(bounds);
setColor(color);
}
@Override
public void paint(Graphics2D g2d) {
g2d.setColor(getColor());
g2d.fill(getBounds());
g2d.setColor(Color.GRAY);
Rectangle bounds = getBounds();
g2d.drawLine(bounds.x + (bounds.width / 2), bounds.y, bounds.x + (bounds.width / 2), bounds.y + bounds.height);
g2d.drawLine(bounds.x, bounds.y + (bounds.height / 2), bounds.x + bounds.width, bounds.y + (bounds.height / 2));
}
}
这只是一个基本的方块,没什么特别的,但是,它是自包含的,易于创建和管理.您可以使用这个简单的模式创建您喜欢的任何形状组合,在一天结束时,您的电路板类将无关紧要,它只需要它占据的空间以及如何绘制它,说到哪个,你需要一些管理所有这些形状的容器类型……
public class PuzzelPane extends JPanel {
private List<Piece> pieces;
public PuzzelPane() {
Dimension size = getPreferredSize();
pieces = new ArrayList<>(25);
Point location = new Point((size.width - 50) / 2, (size.width - 50) / 2);
pieces.add(new Square(location, 50, Color.BLUE));
}
@Override
public Dimension getPreferredSize() {
return new Dimension(200, 200);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
for (Piece piece : pieces) {
Graphics2D g2d = (Graphics2D) g.create();
piece.paint(g2d);
g2d.dispose();
}
}
}
这是一个非常简单的概念,它有一个List来维护所有可用的形状,并简单地循环它以在paintComponent方法中绘制它们
结合this example和this example的想法,您现在可以拖动形状
内容总结
以上是互联网集市为您收集整理的java – 在这个游戏中使用哪个布局管理器?全部内容,希望文章能够帮你解决java – 在这个游戏中使用哪个布局管理器?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。