Java制作一个调用drawOval的drawCircle方法
我需要做一个drawCircle方法Java制作一个调用drawOval的drawCircle方法,java,user-interface,graphics,Java,User Interface,Graphics,我需要做一个drawCircle方法 public void drawCircle(int x, int y, int radius) 这画了一个圆心和半径相同的圆。drawCircle方法需要调用drawOval。我不知道如何从drawCircle方法调用drawOval,而不向其传递图形。这可能吗 以下是我所拥有的: import java.awt.*; import javax.swing.*; class test { public static void main(S
public void drawCircle(int x, int y, int radius)
这画了一个圆心和半径相同的圆。drawCircle方法需要调用drawOval。我不知道如何从drawCircle方法调用drawOval,而不向其传递图形。这可能吗
以下是我所拥有的:
import java.awt.*;
import javax.swing.*;
class test
{
public static void main(String[] args)
{
JFrame frame = new JFrame("test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new MyPanel());
frame.pack();
frame.setVisible(true);
}
}
class MyPanel extends JPanel
{
MyPanel()
{
setBackground(Color.WHITE);
setPreferredSize(new Dimension(250,250));
}
public void paintComponent(Graphics page)
{
super.paintComponent(page);
drawCircle(50,50,20);
}
private void drawCircle(int x, int y, int radius)
{
drawOval(x - radius, y - radius, radius*2, radius*2);
}
}
您可以通过在swing组件上调用
getGraphics()
来获取图形上下文。但我仍然会创建我的绘图方法来接受图形上下文
比如说
private void drawCircle(Graphics g, int x, int y, int radius) {
g.fillOval(x-radius, y-radius, radius*2, radius*2)
}
或者
private void drawCircle(int x, int y, int radius) {
getGraphics().fillOval(x-radius, y-radius, radius*2, radius*2)
}
但是,请注意getGraphics()
可以返回null
。最好从paint()方法中调用drawCircle()方法,并将其传递给图形上下文
例如
您可以通过在swing组件上调用
getGraphics()
来获取图形上下文。但我仍然会创建我的绘图方法来接受图形上下文
比如说
private void drawCircle(Graphics g, int x, int y, int radius) {
g.fillOval(x-radius, y-radius, radius*2, radius*2)
}
或者
private void drawCircle(int x, int y, int radius) {
getGraphics().fillOval(x-radius, y-radius, radius*2, radius*2)
}
但是,请注意getGraphics()
可以返回null
。最好从paint()方法中调用drawCircle()方法,并将其传递给图形上下文
例如
优点:
- 您不必通过或获取图形上下文
- 您可以在不更改方法的情况下选择是绘制还是填充圆(例如,在paint()方法中执行
或g.draw(getCircle(x,y,r));
)g.fill…
- 您可以使用AWT draw方法语法来实际绘制/填充圆
- 在双精度坐标系中得到一个圆
- 您不必通过或获取图形上下文
- 您可以在不更改方法的情况下选择是绘制还是填充圆(例如,在paint()方法中执行
或g.draw(getCircle(x,y,r));
)g.fill…
- 您可以使用AWT draw方法语法来实际绘制/填充圆
- 在双精度坐标系中得到一个圆
您说过“drawCircle方法需要调用drawOval.”,但可能您没有意识到另一种选择。为什么要通过传递图形来完成此操作?您不需要在paintComponent中调用drawOval,比如g.drawOval(),其中g是图形吗?通过“向其传递图形”,您指的是Java库对象吗?发布更完整的代码。你想在哪个对象上调用drawCircle?如果您计划从java.awt.*库调用drawOval,则需要一个图形对象来调用yes上的方法。请给出更多的上下文。是的,我指的图形是Java库对象。为什么要传递图形?您不需要在paintComponent中调用drawOval,比如g.drawOval(),其中g是图形吗?通过“将图形传递给它”,您指的是Java库对象吗?发布更完整的代码。你想在哪个对象上调用drawCircle?如果您计划从java.awt.*库调用drawOval,则需要一个图形对象来调用yes上的方法。请给出更多的上下文。是的,我指的是Java库objectTrue的图形,但这是一个家庭作业问题。如果没有图形就做不到这一点,那么我就告诉我的教授。是的,当我在Windows上测试它时,我猜它会返回空值,然而,它在OSX上工作。是的,但这是一个家庭作业问题。如果没有图形就做不到这一点,那么我就告诉我的教授。是的,当我在Windows上测试它时,我猜它会返回空值,然而,它在OSX上工作。