Java 矩形/椭圆程序

Java 矩形/椭圆程序,java,swing,graphics,graphics2d,Java,Swing,Graphics,Graphics2d,我对这个使用矩形和椭圆的程序有问题 有4个按钮可供选择,矩形/椭圆/边/标签,标签有一个文本字段 选择要绘制的矩形/椭圆,然后单击框架中的某个位置,它将在该位置绘制。边是通过拖动鼠标完成的 我不明白的是如何同时使用矩形和椭圆,以及作为“RectangleNode”的超类的示例抽象类等。下面是抽象类GrapheElement的代码: import java.awt.Graphics2D; abstract public class GraphElement { private doubl

我对这个使用矩形和椭圆的程序有问题

有4个按钮可供选择,矩形/椭圆/边/标签,标签有一个文本字段 选择要绘制的矩形/椭圆,然后单击框架中的某个位置,它将在该位置绘制。边是通过拖动鼠标完成的

我不明白的是如何同时使用矩形和椭圆,以及作为“RectangleNode”的超类的示例抽象类等。下面是抽象类GrapheElement的代码:

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);
    }
}    

从我对你的问题的理解来看,你似乎不确定如何创建一个有两个子类的类,这两个子类做的事情看起来“本质上”不同。如果转到
Java
文档并查看
Graphics
类,尤其是
drawOval
draw矩形
fillOval
fillRectangle
方法,您将看到,方法名称中的椭圆实际上创建了一个符合给定矩形大小的省略号。我认为这足以作为一个提示,让您开始编写您的程序

是的,不允许吗?如果是这样的话,我会把它删掉或者做点什么家庭作业就好了。下次把它标记为家庭作业。你能发布矩形、椭圆和矩形节点的代码吗?好的,现在把它标记为家庭作业的问题已经解决了(非常方便的标记,其中一个-有很多追随者),我可以转移到另一个问题上。为了更快地得到更好的帮助,发布一个。哦,好吧,如果我有家庭作业问题,我下次会把它贴上标签。对于矩形/椭圆代码,我还没有开始,因为我真的迷路了。我需要一些关于如何做到这一点的指南,但不是直接的答案。到目前为止,我将发布我的查看器类