Java 如何使用getWidth和getHeight方法将圆放入帧的中间?
我在使用方法Java 如何使用getWidth和getHeight方法将圆放入帧的中间?,java,methods,colors,frame,geometry,Java,Methods,Colors,Frame,Geometry,我在使用方法getWidth()和getHeight()将绘制的圆放入帧中间时遇到问题。我用Image软件包尝试了一些东西,但不知道在哪里实现这些方法: import java.awt.Color; import java.awt.Graphics; import java.awt.Frame; import java.awt.Image; public class Circle extends Frame { public Circle() { setSize(400,400);
getWidth()
和getHeight()
将绘制的圆放入帧中间时遇到问题。我用Image
软件包尝试了一些东西,但不知道在哪里实现这些方法:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Frame;
import java.awt.Image;
public class Circle extends Frame {
public Circle() {
setSize(400,400);
setLocationRelativeTo(null);
setVisible(true);
}
public Color() {
}
public void paint(Graphics g) {
g.setColor(Color.ORANGE);
g.fillOval(200, 200, 200, 200);
}
public static void main(String[] args) {
Circle c = new Circle();
c.paint(null);
}
}
然后我必须使用方法setColor(Color)
和Color
类构造函数来生成这个圆的随机颜色(在每次运行这个程序之后)。我打开了Color
构造函数,但出现了一个错误:只需从paint(…)
方法中调用getWidth()
和getHeight()
,并使用为fillOval(…)
参数返回的结果
但话说回来,最好是在添加到框架中的画布上绘制。话虽如此,在Swing应用程序中添加到JFrame的contentPane中的JPanel的paintComponent(…)
方法中绘制更好。只需从paint(…)中调用getWidth()
和getHeight()
方法,并使用为fillOval(…)
参数返回的结果
但话说回来,最好是在添加到框架中的画布上绘制。说到这里,最好还是画出
paintComponent(…)
在Swing应用程序中添加到JFrame内容窗格的JPanel方法。最好将所有绘制功能提取到JComponent
中,以充分利用Swing使用paintComponent
优化的绘制模型
圆圈实际上是一个JFrame
。在其构造函数内部,创建了一个新组件,用于处理圆的绘制。Color
构造函数已被删除,因为这是无效语法
圆坐标从左上角开始,取绘图所需的全部可用宽度和高度
还建议使用轻量级Swing组件而不是旧式AWT组件
public class Circle extends JFrame {
public Circle() {
setSize(400, 400);
add(new CirclePanel());
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
Circle c = new Circle();
}
}
class CirclePanel extends JComponent {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.ORANGE);
g.fillOval(0, 0, getWidth(), getHeight());
}
}
请参阅:最好将所有绘制功能提取到JComponent
,以充分利用Swing使用paintComponent
优化的绘制模型
圆圈实际上是一个JFrame
。在其构造函数内部,创建了一个新组件,用于处理圆的绘制。Color
构造函数已被删除,因为这是无效语法
圆坐标从左上角开始,取绘图所需的全部可用宽度和高度
还建议使用轻量级Swing组件而不是旧式AWT组件
public class Circle extends JFrame {
public Circle() {
setSize(400, 400);
add(new CirclePanel());
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
Circle c = new Circle();
}
}
class CirclePanel extends JComponent {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.ORANGE);
g.fillOval(0, 0, getWidth(), getHeight());
}
}
请看:@Reimeus:你和你的好榜样也是如此!谢谢您可以在每次运行时获得此随机颜色的提示吗?@Fastkowy:创建一个允许颜色的数组,然后使用随机对象获取一个不大于数组大小-1的整数(简单地nextInt(mycolorray.length)
,并使用该int从数组中选择一种颜色。@Reimeus:你和你的好例子也一样!谢谢!你可以在每次运行时都得到这种随机颜色的提示吗?@Fastkowy:创建一个允许颜色的数组,然后使用一个随机对象获得一个不大于数组大小-1的int(只需nextInt(mycolorray.length)
,并使用该int从数组中选择颜色。谢谢,“您能解释一下,为什么创建了圆对象吗?”对不起,我现在明白了:)请参见此创建随机颜色。已编辑^。因此我必须创建类(颜色)像这样?请不要更改原始问题中的代码,这会影响给出的任何答案。如果你想创建一个新帖子,人们非常乐意提供帮助。谢谢,“你能解释一下,为什么创建了圆形对象吗?”对不起,我现在明白了:)请参见此创建随机颜色。已编辑^。那么我必须像这样创建类(颜色)吗?请不要更改原始问题中的代码,这会影响给出的任何答案。如果你想创建一个新的帖子,人们非常乐意提供帮助。