2012-02-23 2 views
0

У меня возникли проблемы с этой программой, которая работает с прямоугольниками и эллипсами.Rectangle/Ellipse Program

Есть 4 кнопки для выбора, прямоугольник/эллипс/край/метка, с меткой, имеющей текстовое поле Вы выбираете прямоугольник/эллипс для рисования и нажмите где-то в кадре, и он нарисует его там. Край делается, перетаскивая мышь.

То, что я не понимаю, как это сделать как прямоугольники и эллипсы, и образец абстрактного класса, данное быть суперкласс в «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

Из того, что я понимаю о вашем вопросе, мне кажется, что вы не уверены, как создать класс, который имеет два подкласса, которые делают вещи, которые кажутся «по своей сути» разные. Если вы идете в Java документы и смотреть-смотреть в Graphics классе, особенно на drawOval, drawRectangle, fillOval и fillRectangle методов, вы увидите, что овал во имя метода фактически создает многоточие, что припадки в заданном размере прямоугольника. Я думаю, что этого достаточно, чтобы дать вам подсказку начать работу над вашей программой.