2016-06-05 2 views
-3
죄송

, 이것은 아마 정말 기본적인 질문이지만, 내가 지금처럼 나비 객체 그리기에 대한 코드와 나비라는 클래스 먹으 렴을 가지고 또한왜 구성 요소가 아무 것도 그리지 않습니까?

import java.awt.Color; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import java.awt.BasicStroke; 

public class butterfly extends JPanel { 
public butterfly() { 
} 
    public void draw(Graphics2D g2){ 
    //the width of the oval. A petal is an oval. 

    //TODO: Your code goes IN HERE (not in main), ALL OF IT. Replace the code below. 

    //draw one oval of length 300pixels from center to edge 
    g2.setColor(Color.blue); 
    g2.fillOval(500,55, 70, 70); 
    g2.fillOval(450, 40, 70, 70); 
    g2.fillOval(460,100, 40, 40); 
    g2.fillOval(495, 110, 40, 40); 


    g2.setColor(Color.black); 
    g2.setStroke(new BasicStroke(13)); 

    g2.drawLine(520, 50, 490, 150); 

} 

} 

을 다음 내가이 구성 요소에 넣어 시도 내가 수 그것과 함께 더 많은 물체를 넣지 만 나비를 그리지 않을 것인가?

import java.util.*; 
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
public class RippingOffofAmy extends JComponent 
{ 

    private butterfly yay; 

    public RippingOffofAmy() 
    { 
     yay = new butterfly(); 
    } 

    public void paintComponent(Graphics g) 
    { 
     Graphics2D g2 = (Graphics2D) g; 

     //checks to see if rectangle has moves 100 places yet 
     //if has, then adds new obstacle and resets count 
     yay.draw(g2); 

     //draws obstacle and avatar 
    } 

} 

왜? (클래스 이름과 코멘트를 무시하고 친구들의 코드를 사용했다.) 만약 내가 뭔가를 잃어 버렸다면 누군가가 BC에 무엇을 추가 할 것인가에 대해 정말로 구체적 일 수있다. 나는 자바에서 끔찍하다, 고마워!

+4

이것은 Swing 드로잉을하는 방법이 아니며 그렇게하는 방법에 대해 야생적인 추측을하는 것처럼 보입니다. 그렇지 않습니다. 자습서를 아직 읽지 않았습니까? 이것이 내가 시작할 수있는 곳입니다. [Lesson : Custom Painting] (http://docs.oracle.com/javase/tutorial/uiswing/painting/index.html) –

+2

자습서를 검토 한 후에도 여전히 문제가 있다면 [sscce] (http://sscce.org) 또는 [최소 예제 프로그램/mcve] (http://stackoverflow.com/help/mcve)를 작성하고 게시하여 코드를 압축하는 가장 작은 비트로 압축하는 것을 고려하십시오. 컴파일 및 실행, 외부 종속성 (예 : 데이터베이스 또는 이미지에 연결해야 함)이 없으며 문제와 관련이없는 추가 코드가 없지만 여전히 문제를 보여줍니다. –

+2

1) 나비는 패널 일 필요는 없습니다. 2) GUI를 보여주는 주요 방법은 어디에 있습니까? –

답변

-1

일부 자습서를 읽어야하지만 여기에 시도한 내용이 있습니다. 여기

내가 어떻게 할 것인지입니다 :

package de; 

import java.awt.BasicStroke; 
import java.awt.Color; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 

import javax.swing.*; 

@SuppressWarnings("serial") 
public class Butterfly extends JPanel { 
@Override 
public void paint(Graphics g){ 
    super.paint(g); 
    Graphics2D g2d = (Graphics2D) g; 
    g2d.setColor(Color.blue); 
    g2d.fillOval(500,55, 70, 70); 
    g2d.fillOval(450, 40, 70, 70); 
    g2d.fillOval(460,100, 40, 40); 
    g2d.fillOval(495, 110, 40, 40); 


    g2d.setColor(Color.black); 
    g2d.setStroke(new BasicStroke(13)); 

    g2d.drawLine(520, 50, 490, 150); 
} 

}

간략한 설명 : CREAT (윈도우 자체) JFrame의 JPanel의 입력에 대한 코드의 통증 함수를 재정의 나비를 통증 기능에 넣으십시오 '나비'(JPanel을 확장)를 만듭니다 JFrame에 나비를 추가하십시오

+1

왜 아니 생성자? 우리가 JPanel을 확장했기 때문에 어쨌든 super를 호출하면 Java가이 작업을 수행합니다. 만약 당신이 그것을하는 또 다른 방법, 제발 보여주세요, 나는 더 많은 것을 배우고 싶어합니다! –

+0

내가 솔직히 무슨 일이 일어나고 있는지 모르겠다. –

+1

@ user2130108 : 무슨 일이 일어나고있는 건 너의 [mcve]를 게시하고이 의미가 있지만 잘못된 코드를 빌려주지 않아야한다는 것이다. –

관련 문제