2015-10-03 31 views
0

我正在绘制一个圆,并在GUI的底部显示半径和直径。我得到了这个圆和GUI中的一切工作,但有问题放在JSlider中,您可以在GUI中调整半径和直径。我会如何去做这件事?它会进入超级课堂吗?将JSlider放入java代码中?

这是代码。 (记住有两班)

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 

public class Circle1 extends JFrame { 
    private CircleCanvas theCanvas; 
    private JTextArea display; 

    public Circle1() { 
     super("Circle1"); 
     theCanvas = new CircleCanvas(); 
     display = new JTextArea(5, 30); 
     display.setText("The Radius is: " + theCanvas.getRadius() + "\nThe Diameter is: " + theCanvas.getDiameter() 
       + "\nThe Area is: " + theCanvas.getArea() + "\nThe Circumference is: " + theCanvas.getCircumference()); 

     getContentPane().add(theCanvas, BorderLayout.CENTER); 
     getContentPane().add(display, BorderLayout.SOUTH); 
     setSize(200, 200); 
     show(); 
    } 

    public static void main(String args[]) { 
     Circle1 app = new Circle1(); 
     app.addWindowListener(new WindowAdapter() { 
      public void WindowClosing(WindowEvent e) { 
       System.exit(0); 
      } 
     }); 
    } 
} 

class CircleCanvas extends JPanel { 
    private int radius; 

    public CircleCanvas() { 
     radius = (int) (1 + Math.random() * 100); 
     setSize(100, 100); 
    } 

    public void paintComponent(Graphics g) { 
     g.drawOval(0, 0, radius, radius); 
    } 

    public int getDiameter() { 
     return (2 * radius); 
    } 

    public int getCircumference() { 
     return (int) (2 * Math.PI * radius); 
    } 

    public int getArea() { 
     return (int) (radius * radius * Math.PI); 
    } 

    public int getRadius() { 
     return radius; 
    } 
} 
+0

为什么不使用'SeekBar'来代替? –

+0

@Joaquin,什么是“SeekBar”? “从我的网上快速搜索,这是一个Android组件,这是一个Swing应用程序 – camickr

+0

是啊,让我感到困惑太大了JSlider是面向对象的Java – Noah

回答

4

为什么不工作的例子,这将告诉你如何更好地组织你的代码开始?

从Swing教程How to Use Sliders的演示开始。

创建一个面板来容纳所有组件。然后,您可以将滑块添加到面板,并将画布添加到面板。本教程使用BoxLayout,但使用BorderLayout可能更容易。将画布显示在CENTER中,并将滑块显示在NORTH或SOUTH中。

+0

是的,我想要在圆圈下方的滑块。我会查看提供的链接。谢谢 – Noah

+0

滑块的方法与主类或子类一起使用吗? – Noah

+0

阅读教程并使用演示在提出问题之前提供代码,以便您了解演示代码的设计。您不应该在main()方法中使用任何应用程序代码。 – camickr