nwr*_*bel 1 java swing drawrectangle
我很难做一个相当简单的任务,即获取圆的直径然后绘制它.到目前为止,这是我的代码.
import javax.swing.*;
import java.awt.Graphics;
public class Shapes extends JFrame
{
double diameter;
public Shapes()
{
setSize(600,600);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public void getDiameter()
{
String input = JOptionPane.showInputDialog("What is the diameter of the circle?");
diameter = Double.parseDouble(input);
Shapes gui = new Shapes();
gui.setVisible(true);
}
public static void main(String[] args)
{
Shapes app = new Shapes();
app.getDiameter();
}
public void paint(Graphics canvas)
{
canvas.drawOval(50, 50, (int)diameter, (int)diameter);
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,它会调出Jframe窗口,但没有绘制任何东西,所以我猜测直径的值永远不会传递给paint方法.有人可以帮助我让这个工作吗?谢谢.
您的程序实际上创建了两个Shapes对象,其中一个正确设置了直径字段但未显示,另一个保留直径的默认值0并显示.
建议:
paintComponent(Graphics g)中保存并显示的JPanel 的方法覆盖中绘制.这有很多原因,但是对于其中一个,因为该paint(...)方法不仅负责绘制组件而且还负责绘制边框和子项,这样可以防止在paint(...)尝试绘制GUI的子项和边框时导致问题.鉴于Swing组件默认使用双缓冲,它也可以帮助你的动画(肯定会很快你会做).super.paintComponent(g)在JPanel的paintComponent覆盖范围内调用该方法.这将允许Swing擦除需要擦除的图像.| 归档时间: |
|
| 查看次数: |
2792 次 |
| 最近记录: |