2012-04-12 7 views
0

私はJavaについては初心者ですが、本の指示に従っています。 "追加(新FigurePanel(FigurePanel.LINE));"NetBeansでJavaの "FigurePanel"にアクセスすることができません

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

public class TestFigurePanel extends JFrame{ 
    public TestFigurePanel() { 
     setLayout(new GridLayout(2, 3, 5, 5)); 
     add(new FigurePanel(FigurePanel.LINE)); 
    } 
} 

しかし時:私は、次のコードでFigurePanelを作成するつもりです私は次のエラーを取得する:

は「:

シンボル:クラスFigurePanel

クラス:シンボルが見つかりませんTestFigurePanel」

を誰かが良いこれを引き起こしているものをお知らせ場合、私はとても幸せになります問題。

+1

は、クラスのFigurePanelのインスタンスを作成しようとしているように思われていますが、FigurePanelという名前のクラスを持っていません。 –

+0

1)「FigurePanel」の定義は何ですか? 2) 'TestFigurePanel'と同じディレクトリにありますか? 3)おそらくフレームを拡張する必要はありません。 –

答えて

1

あなたのパッケージに、このクラスを追加します。

import java.awt.*; 

import javax.swing.JPanel; 



public class FigurePanel extends JPanel { 

// Define constants 
public static final int LINE = 1; 

public static final int RECTANGLE = 2; 

public static final int ROUND_RECTANGLE = 3; 

public static final int OVAL = 4; 

private int type = 1; 

private boolean filled; 

/** Construct a default FigurePanel */ 

public FigurePanel() { 

} 

/** Construct a FigurePanel with the specified type */ 

public FigurePanel(int type) { 

this.type = type; 

} 



/** Construct a FigurePanel with the specified type and filled */ 

public FigurePanel(int type, boolean filled) { 

this.type = type; 

this.filled = filled; 

} 



/** Draw a figure on the panel */ 

public void paintComponent(Graphics g) { 

super.paintComponent(g); 



// Get the appropriate size for the figure 
int width = getSize().width; 

int height = getSize().height; 



switch (type) { 

    case LINE: // Display two cross lines 
    g.setColor(Color.BLACK); 

    g.drawLine(10, 10, width - 10, height - 10); 

    g.drawLine(width - 10, 10, 10, height - 10); 

    break; 

    case RECTANGLE: // Display a rectangle 
    g.setColor(Color.BLUE); 

    if (filled) 

     g.fillRect((int)(0.1 * width), (int)(0.1 * height), 

     (int)(0.8 * width), (int)(0.8 * height)); 

    else 

     g.drawRect((int)(0.1 * width), (int)(0.1 * height), 

     (int)(0.8 * width), (int)(0.8 * height)); 

    break; 

    case ROUND_RECTANGLE: // Display a round-cornered rectangle 
    g.setColor(Color.RED); 

    if (filled) 

     g.fillRoundRect((int)(0.1 * width), (int)(0.1 * height), 

     (int)(0.8 * width), (int)(0.8 * height), 20, 20); 

    else 

     g.drawRoundRect((int)(0.1 * width), (int)(0.1 * height), 

     (int)(0.8 * width), (int)(0.8 * height), 20, 20); 

    break; 

    case OVAL: // Display an oval 
    g.setColor(Color.BLACK); 

    if (filled) 

     g.fillOval((int)(0.1 * width), (int)(0.1 * height), 

     (int)(0.8 * width), (int)(0.8 * height)); 

    else 

     g.drawOval((int)(0.1 * width), (int)(0.1 * height), 

     (int)(0.8 * width), (int)(0.8 * height)); 

} 

} 



    /** Set a new figure type */ 

    public void setType(int type) { 

    this.type = type; 

    repaint(); 

} 



/** Return figure type */ 

public int getType() { 

return type; 

} 



/** Set a new filled property */ 

public void setFilled(boolean filled) { 

    this.filled = filled; 

    repaint(); 

} 



/** Check if the figure is filled */ 

public boolean isFilled() { 

return filled; 

} 



/** Specify preferred size */ 

public Dimension getPreferredSize() { 

return new Dimension(80, 80); 

} 


} 
関連する問題