2012-02-23 12 views
0

長方形と楕円形で動作するこのプログラムに問題があります。長方形/楕円形プログラム

レクタングル/楕円/エッジ/ラベル、ラベルにはテキストフィールド を選択すると、四角形/楕円のいずれかを選択してフレーム内のどこかをクリックすると描画されます。エッジは、マウスをドラッグして行います。

私は理解していないが、長方形と楕円の両方を行う方法であり、ここでは「RectangleNode」にスーパー等であることを与えられたサンプル抽象クラスは、抽象クラスGraphElementのためのコードです:

import java.awt.Graphics2D; 

abstract public class GraphElement 
{ 
    private double xPos; 
    private double yPos; 
    protected String label; 

    public GraphElement() 
    { 
     xPos = 0; 
     yPos = 0; 
    } 

    public GraphElement(double x, double y) 
    { 
     xPos = x; 
     yPos = y; 
    } 

    public final double getXPos() 
    { 
     return xPos; 
    } 

    public final double getYPos() 
    { 
     return yPos; 
    } 

    public void moveTo (double xLoc, double yLoc) 
    { 
     xPos = xLoc; 
     yPos = yLoc; 
    } 

    public String toString() 
    { 
     String str = "(X,Y) Position: (" + xPos + "," + yPos + ")\n"; 
     return str; 
    } 

    abstract void draw(Graphics2D g2); 
    abstract boolean isSelected(double x, double y); 

    boolean applyLabel() 
    { 
     return true; 
    } 

public String getLabel() 
{ 
    return label; 
} 

public void setLabel(String label) 
{ 
    this.label = label; 
} 
} 

私は完全に失われているので、どんな助けも高く評価されます。

GraphDrawViewer:

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.BorderLayout; 
import javax.swing.*; 
import javax.swing.event.*; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 

public class GraphDrawViewer 
{ 
    public static void main(String[] args) 
    { 
     JFrame frame = new JFrame(); 
     final int FRAME_WIDTH = 1000; 
     final int FRAME_HEIGHT = 1000; 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(FRAME_WIDTH, FRAME_HEIGHT); 
     frame.setTitle("Graph Draw"); 
     frame.setLayout(new BorderLayout()); 

     //Panel 
     JPanel panel = new JPanel(); 
     frame.add(panel, BorderLayout.NORTH); 

     //Buttons 
     JButton rectangleButton = new JButton("Rectangle"); 
     JButton ellipseButton = new JButton("Ellipse"); 
     JButton edgeButton = new JButton("Edge"); 
     JButton labelButton = new JButton("Label"); 

     //Text Field 
     final int FIELD_WIDTH = 10; 
     final JTextField labelField = new JTextField(FIELD_WIDTH); 

     //Add all buttons 
     panel.add(rectangleButton); 
     panel.add(ellipseButton); 
     panel.add(edgeButton); 
     panel.add(labelButton); 
     panel.add(labelField); 

     frame.setVisible(true); 
    } 
}  
+0

はい、許可されていませんか?もしそうなら、私はそれを削除しますか何か – JA3N

+0

宿題は大丈夫です。次回は宿題としてタグ付けするだけです。 –

+0

RectangleとEllipseとRectangleNodeのコードを投稿できますか? –

答えて

0

私はあなたの質問について理解するものから、あなたが「本質的に」とは、異なるように見えることを行う2つのサブクラスを持つクラスを作成する方法が不確実だと思われます。あなたはJavaドキュメントに移動し、ルックご覧特にdrawOvaldrawRectanglefillOval、およびfillRectangle方法で、Graphicsクラスでを取る場合は、メソッドの名前に楕円形が実際にそのフィット省略記号を作成していることがわかります指定された矩形のサイズはです。私はこれがあなたのプログラムの作業を開始するのに十分なヒントで十分だと思います。

関連する問題