2011-12-10 2 views
0

NB : 전에는 스윙을 사용 해본 적이 없으며, 그래픽 2D와 나는별로 프로그래밍하지 않습니다 ...그래프를 표시하기 위해 Java에서 Panel, Frame 등을 만드는 방법은 무엇입니까?

배열/벡터를 입력으로 사용하는 프로그램을 만드는 것이 좋습니다. 각 인덱스 0,1,2 등이 0 또는 1 (int)을 보유하는이 배열 - 0,1,2 등의 "활동 없음"또는 "활동"을 나타냅니다.

프로그램을 원합니다. 불 연속적으로 직선을 그리는 수평선 - 시간의 함수로 "활동"대 "활동 없음"- 입력으로 가져온 배열을 기반으로 함. 코드를 실행할 때 패널에 팝업이 나타납니다. 아이디어는 시간의 함수로 활동/활동 없음을 표시하므로 선은 차트 (x 축 & y 축) ... 그리고 서로 다른 경우를 비교하기 위해 서로 위에 불연속적인 선이 여러 개있을 것입니다.

내가 스윙과 그래픽 2D를 사용하여 예제를 보는 동안 시도,하지만 난 시간이 매우 제한된 양을 가지고 - 나는 도움이 필요 정말 수는 ..

코드가 :

  • 패널, 프레임 등을 만듭니다 - 그래프를 삽입 할 수있는 곳을 "쉽게"볼 수 있습니다. 즉, 그래프를 표시 할 준비가 된 패널입니다.
  • 그래프를 기반으로 불연속 수평선 그래프를 그립니다. 전술 한 어레이

은 ... 대단히 감사합니다 :)

코멘트에서 추가 :

죄송합니다 - 내 대답을 완료되지 않은 : 나는 확실히 스윙 프레임에있는 모든 다른 것들을 사용하는 방법을 시도 할 수, 패널 그러나 순간에 나의 주요 목표는 학교에 대한 과제를 끝내는 것입니다. 이것은 데이터 자체의 시각화입니다. 그리고 실제로 어떻게 당신이 거기에 도착하는지 신경 쓰지 않습니다. 가장 중요한 것은 그것이 유용한 것을 시각화한다는 것입니다. 그래서 저는 제가 시작하게 할 수있는 코드를 가지고 있다면 시간을 절약 할 수 있다고 생각했습니다. 어떻게 시작해야 하는지를 배울 필요가 없습니다. 이것은

+1

JPanel로 JFrame을 만드는 것이 실제로 스윙에서 배워야 할 첫 번째 시도입니까? 당신이 시도한 코드를 보여줄 수 있습니까? – Jonas

+0

글쎄, 내 첫 번째 접근 방식은 내가 뭘 찾고 있었는지 약간의 코드를 찾으려고했다. 그 순간 스윙이나 그래픽을 배우려고하지 않았기 때문에.이 페이지는 http : // www.java2s.com/Code/Java/2D-Graphics-GUI/Demobarchartandpiechart.htm ... – user1091430

+0

죄송합니다 - 내 대답을 끝내지 못했습니다 :) 나는 스윙 프레임, 패널에서 모든 다른 것들을 사용하는 법을 배우려고 노력할 수있었습니다. 그러나 순간에 나의 주요 목표는 학교에 대한 과제를 끝내는 것입니다. 이것은 데이터 자체의 시각화입니다. 그리고 실제로 어떻게 당신이 거기에 도착하는지 신경 쓰지 않습니다. 가장 중요한 것은 그것이 유용한 것을 시각화한다는 것입니다.그래서 저는 제가 시작하게 할 수있는 코드를 가지고 있다면 시간을 절약 할 수 있다고 생각했습니다. 그리고 처음에는 그것이 어떻게 작동 하는지를 배울 필요가 없습니다 ... – user1091430

답변

2

는 (... 동, 전력, 같은) 내가 당신이 원하는 경우

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

public class ActivityGraph extends JFrame { 

int[] active = {0,1,1,0,0,0,1,0,1,0,1,0,1,1,1,1,0,0,1,0,1,1}; 
int length = 25, //basic length in pixels for drawing the lines 
     offset = 50; //so the lines aren't sticked at the border 

private ActivityGraph(String name, int x, int y, int width, int height) { 
    super(name); 
    setBounds(x, y, width, height); 
    setDefaultCloseOperation(EXIT_ON_CLOSE); 
    JPanel panel = new GraphPanel(); 
    //panel.setBounds(0, 0, 800, 400); not nessesary 
    add(panel); 
} 

public static void main(String[] args) { 
    new ActivityGraph("Activity Graph", 60, 60, 800, 400).setVisible(true); 
} 

private class GraphPanel extends JPanel { 

    public void paint(Graphics g) { 
     g.setColor(Color.white); 
     g.fillRect(0, 0, 800, 400); 
     //setting background (method setBackground() doesn't want to work for me) 
     g.setColor(Color.black); 
     for(int i = 0; i<active.length; i++) { 
      if(active[i]==0) { 
       g.drawLine(offset + i*length, offset + length, offset + i*length + length, offset + length); 
      } 
      else { 
       g.drawLine(offset + i*length, offset, offset + i*length + length, offset); 
      } 
      /* 
      * draw line from XY point to another XY point 
      * notice that X = Y = 0 point is in left top corner 
      * so higher Y values will mean "downer" points acctualy 
      */ 
     } 
    } 

} 

} 

, 나는 수학 함수 당신에게 그래프 서랍을 보낼 수 있습니다 도움이 될 것 같아요

+0

대단히 고마워요 - 그게 많은 도움이됩니다 :) – user1091430

+0

문제는 없습니다. 자바 2D 그래픽으로도 시작되었습니다 :) – kajacx

4

예입니다 Graphics2D을 배울 필요가 없습니다. JFreeChart으로 가십시오. 여기에 간단한 tutorial이 있습니다. (최소한의 프로그래밍 지식이 필요합니다.)

+0

관련 타임 시리즈 예제가 있습니다. [여기] (http://stackoverflow.com/a/5522583/230513)). – trashgod

+0

감사합니다. JfreeChart와 jChart2D로 놀려고했습니다.하지만 불연속 그래프로 어떤 예제도 찾지 못했습니다 .. – user1091430

관련 문제