栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

绘制用户选择的形状

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

绘制用户选择的形状

我认为您需要回到基础…

这行不通…

fp.setBackground("white");

Component#setBackground
不使用a
String
作为参数,而是使用
Color

您的所有

addItemListener
通话都无法正常进行,因为您尚未实现
ItemListener

我不确定您希望通过此操作实现什么…

@Overridefp.dRect();

但这是行不通的。@Override用于指示某个方法已被祖先覆盖,您只是在调用该方法

FigurePanel

Java和C和C ++一样,区分大小写。

没有这样的课程

itemEvent
ItemEvent

public void ItemStateChanged(itemEvent e) {

没有这样的课程

graphics
Graphics

public void paintComponent(graphics g) {

而且我什至不会尝试猜测您希望通过以下方式实现的目标…

public void paintComponent(graphics g) {    super.paintComponent(g);    dLine() {        g.drawLine(10, 10, 160, 10);    }    dRect() {        g.drawRect(10, 10, 150, 50);    }    dOval() {        g.drawOval(10, 10, 150, 50);    }    fill() {        g.setColor(Color.GREEN); if (rect.isSelected()) {     g.fillRect(10, 10, 150, 50); } else if (oval.isSelected()) {     g.fillOval(10, 10, 150, 50); }        }    erase() {        g.setColor(Color.WHITE);        if (rect.isSelected()) { g.fillRect(10, 10, 150, 50);        } else if (oval.isSelected()) { g.fillOval(10, 10, 150, 50);        }    }}

Java不支持“内联方法”(或您想调用的任何方法),并且不支持,使它们成为方法也将无法实现您想要的工作…

实际上,您做得很好的一件事就是重写

paintComponent
并调用了
super.paintComponent
……做得好:D!

更新

我鼓励您通读…

  • Java Trail,特别是那些涉及基础知识的东西,尤其是那些涉及继承的东西
  • 定制画
  • 2D图形

更新了可能的运行示例

import java.awt.BorderLayout;import java.awt.Color;import java.awt.Dimension;import java.awt.EventQueue;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Shape;import java.awt.event.ActionEvent;import java.awt.geom.Ellipse2D;import java.awt.geom.Line2D;import java.awt.geom.Rectangle2D;import javax.swing.AbstractAction;import javax.swing.ButtonGroup;import javax.swing.Jframe;import javax.swing.JPanel;import javax.swing.JRadioButton;import javax.swing.UIManager;import javax.swing.UnsupportedLookAndFeelException;public class DrawShapes {    public static void main(String[] args) {        new DrawShapes();    }    public DrawShapes() {        EventQueue.invokeLater(new Runnable() { @Override public void run() {     try {         UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());     } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {     }     Jframe frame = new Jframe("Testing");     frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);     frame.setLayout(new BorderLayout());     frame.add(new DrawPane());     frame.pack();     frame.setLocationRelativeTo(null);     frame.setVisible(true); }        });    }    public class DrawPane extends JPanel {        public DrawPane() { setLayout(new BorderLayout()); RenderPane rp = new RenderPane(); add(new ControlsPane(rp), BorderLayout.NORTH); add(rp);        }    }    public class ControlsPane extends JPanel {        public ControlsPane(RenderPane rp) { JRadioButton[] btns = new JRadioButton[4]; btns[0] = new JRadioButton(new LineAction(rp)); btns[1] = new JRadioButton(new RectangleAction(rp)); btns[2] = new JRadioButton(new OvalAction(rp)); btns[3] = new JRadioButton(new ClearAction(rp)); ButtonGroup bg = new ButtonGroup(); for (JRadioButton btn : btns) {     bg.add(btn);     add(btn); }        }    }    public class RenderPane extends JPanel {        private Shape shape;        @Override        public Dimension getPreferredSize() { return new Dimension(400, 400);        }        public void setShape(Shape shape) { this.shape = shape; repaint();        }        @Override        protected void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D) g.create(); if (shape != null) {     g2d.setColor(Color.RED);     g2d.draw(shape); } g2d.dispose();        }    }    public class LineAction extends AbstractRenderAction {        public LineAction(RenderPane renderPane) { super(renderPane); putValue(NAME, "Line");        }        @Override        public Shape getShape() { return new Line2D.Float(0f, 0f, getRenderPane().getWidth(), getRenderPane().getHeight());        }    }    public class RectangleAction extends AbstractRenderAction {        public RectangleAction(RenderPane renderPane) { super(renderPane); putValue(NAME, "Rectangle");        }        @Override        public Shape getShape() { return new Rectangle2D.Float(10, 10, getRenderPane().getWidth() - 20, getRenderPane().getHeight() - 20);        }    }    public class OvalAction extends AbstractRenderAction {        public OvalAction(RenderPane renderPane) { super(renderPane); putValue(NAME, "Oval");        }        @Override        public Shape getShape() { float radius = Math.min(getRenderPane().getWidth() - 20, getRenderPane().getHeight() - 20); return new Ellipse2D.Float(10, 10, radius, radius);        }    }    public class ClearAction extends AbstractRenderAction {        public ClearAction(RenderPane renderPane) { super(renderPane); putValue(NAME, "Clear");        }        @Override        public Shape getShape() { return null;        }    }    public abstract class AbstractRenderAction extends AbstractAction {        private RenderPane renderPane;        public AbstractRenderAction(RenderPane renderPane) { this.renderPane = renderPane;        }        public RenderPane getRenderPane() { return renderPane;        }        public abstract Shape getShape();        @Override        public void actionPerformed(ActionEvent e) { getRenderPane().setShape(getShape());        }    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/440760.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号