2015-10-03 27 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