Java 矩形/椭圆程序
我对这个使用矩形和椭圆的程序有问题 有4个按钮可供选择,矩形/椭圆/边/标签,标签有一个文本字段 选择要绘制的矩形/椭圆,然后单击框架中的某个位置,它将在该位置绘制。边是通过拖动鼠标完成的 我不明白的是如何同时使用矩形和椭圆,以及作为“RectangleNode”的超类的示例抽象类等。下面是抽象类GrapheElement的代码:Java 矩形/椭圆程序,java,swing,graphics,graphics2d,Java,Swing,Graphics,Graphics2d,我对这个使用矩形和椭圆的程序有问题 有4个按钮可供选择,矩形/椭圆/边/标签,标签有一个文本字段 选择要绘制的矩形/椭圆,然后单击框架中的某个位置,它将在该位置绘制。边是通过拖动鼠标完成的 我不明白的是如何同时使用矩形和椭圆,以及作为“RectangleNode”的超类的示例抽象类等。下面是抽象类GrapheElement的代码: import java.awt.Graphics2D; abstract public class GraphElement { private doubl
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
方法,您将看到,方法名称中的椭圆实际上创建了一个符合给定矩形大小的省略号。我认为这足以作为一个提示,让您开始编写您的程序 是的,不允许吗?如果是这样的话,我会把它删掉或者做点什么家庭作业就好了。下次把它标记为家庭作业。你能发布矩形、椭圆和矩形节点的代码吗?好的,现在把它标记为家庭作业的问题已经解决了(非常方便的标记,其中一个-有很多追随者),我可以转移到另一个问题上。为了更快地得到更好的帮助,发布一个。哦,好吧,如果我有家庭作业问题,我下次会把它贴上标签。对于矩形/椭圆代码,我还没有开始,因为我真的迷路了。我需要一些关于如何做到这一点的指南,但不是直接的答案。到目前为止,我将发布我的查看器类