2014-10-22 4 views
0

누구에게이 문제가 무엇이 있는지 알려주실 수 있습니까? 저는 Java에 익숙하지 않아 왜 이것이 JPanel이나 직사각형 또는 문자열을 열지 않는지 알 수 없습니다. 아무것도 보이지 않지만 컴파일됩니다.JPanel에 막대 그래프 만들기

코드 : 주요

public static void main(String[] args) { 
    new Graphing(); 
} 

에서

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

public class Graphing extends JPanel 
{ 

    public static void main (String[] args) 
    { 
    } 

    public Graphing() 
    { 
     JFrame frame = new JFrame ("Nested Panels"); 
     frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); 

     frame.getContentPane(); 
     frame.setPreferredSize(new Dimension(350,200)); 
     frame.pack(); 
     frame.setVisible(true); 
    } 

    public void paintComponent (Graphics page) 
    {    
     super.paintComponent (page);   
     final int HEIGHT = 10; 

     page.setColor (Color.yellow); 
     page.fillRect (50, 50, (7*10), HEIGHT);//1-10 
     page.fillRect (50, 64, (5*10), HEIGHT);//11-20 
     page.fillRect (50, 78, (0*10), HEIGHT);//21-30 
     page.fillRect (50, 92, (1*10), HEIGHT);//31-40 
     page.fillRect (50, 106, (9*10), HEIGHT);//41-50 
     page.fillRect (50, 120, (12*10), HEIGHT);//51-60 
     page.fillRect (50, 134, (4*10), HEIGHT);//61-70 
     page.fillRect (50, 148, (6*10), HEIGHT);//71-80 
     page.fillRect (50, 162, (2*10), HEIGHT);//81-90 
     page.fillRect (50, 176, (13*10), HEIGHT);//91-100 

     page.drawString("1-10",10,60); 
     page.drawString("11-20",10,74); 
     page.drawString("21-30",10,88); 
     page.drawString("31-40",10,102); 
     page.drawString("41-50",10,116); 
     page.drawString("51-60",10,130); 
     page.drawString("61-70",10,144); 
     page.drawString("71-80",10,158); 
     page.drawString("81-90",10,172); 
     page.drawString("91-100",10,186); 

     page.drawString("7", 30, 60); 
     page.drawString("5", 30, 74); 
     page.drawString("0", 30, 88); 
     page.drawString("1", 30, 102); 
     page.drawString("9", 30, 116); 
     page.drawString("12", 30, 130); 
     page.drawString("4", 30, 144); 
     page.drawString("6", 30, 158); 
     page.drawString("2", 30, 172); 
     page.drawString("13", 30, 186); 
    } 

} 
+2

1. 주된 메소드는 비어 있습니다.'public static void main (String [] args) {}'. 어서와. 이 문제를 해결할 수 있습니다. –

+1

2. Graphan JPanel을 결코 'this'에 추가하지 마십시오. JFrame에 추가하십시오. 튜토리얼은 언제든지 추측 할 수있는대로 읽으십시오. 여기에서 찾으십시오 : [Swing Info] (http://stackoverflow.com/tags/swing/info). –

+0

안녕 얘들 아, 미안해, 내가 말했듯이 나는 이것에 대해 꽤 새로운 사람이다. 무슨 말인지 보여 주실 수 있습니까? – javaNoobie

답변

5
public Graphing() { 
    JFrame frame = new JFrame ("Nested Panels"); 
    frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); 

    frame.getContentPane().add(this); 

완전히 정결 될하려면, 주요 방법은 실제로해야한다 :

public static void main(String[] args) { 
    SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
      new Graphing(); 
     } 
    }); 
} 

동안이 시점에서, 당신은 이 두 번째 마이의 세부 사항을 알 필요는 없다. n 메소드 코드를 사용하지만, Swing GUI가 메인 스윙 스레드에서 호출되도록 보장한다. 이렇게하면 간단한 프로그램에서 발생할 수있는 예기치 않은 스레딩 문제를 피할 수 있지만 코드가 조금 복잡해지면 발생할 수 있습니다.

기타 문제 - 마술 번호, 하드 코딩 된 숫자를 사용하지 말고 바의 높이를보다 쉽게 ​​변경할 수있는 변수를 사용하는 것이 좋습니다.

+0

와우. 큰 덕분에 대단히 감사합니다. – javaNoobie

관련 문제