形状未显示在jframe中

时间:2016-12-10 16:28:56

标签: java swing jframe awt paint

我正在尝试用Java创建一个简单的绘图应用程序但不能对按钮进行操作,现在我的窗口显示了选项,但是在单击形状下拉列表后我需要编写代码来执行操作。请帮忙

代码:

    package simplepaint;

import java.awt.*;
import javax.swing.*;

public class DrawingFrame extends JFrame {
    JButton loadButton,  saveButton, drawButton;
    JComboBox colorList, shapesList;
    JTextField parametersTextField;

    DrawingFrame() {
        super("Drawing Application");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JToolBar toolbar = new JToolBar();
        toolbar.setRollover(true);

        toolbar.add(loadButton=new JButton("Load"));
        toolbar.add(saveButton=new JButton("Save"));

        toolbar.addSeparator();

        toolbar.add(drawButton=new JButton("Draw"));

        toolbar.addSeparator();
        toolbar.addSeparator();

        toolbar.add(new JLabel("Shape"));
        shapesList=new JComboBox(new String[] { "Circle", "Rectangle", "Line","Triangle" });
        toolbar.add(shapesList);

        toolbar.addSeparator();

        toolbar.add(new JLabel("Parameters"));
        toolbar.add(parametersTextField=new JTextField());

        toolbar.add(new JLabel("Color "));
        colorList=new JComboBox(new String[] { "black", "red", "blue",
                "green", "yellow", "orange", "pink", "magenta", "cyan",
                "lightGray", "darkGray", "gray", "white" });
        toolbar.add(colorList);

        getContentPane().add(toolbar, BorderLayout.NORTH);

    }
    class DrawPane extends JPanel{
      public void paintComponent(Graphics g){
        g.fillRect(20, 20, 100, 200);
       }
    }

    public static void main(final String args[]) {
        DrawingFrame frame = new DrawingFrame();
        frame.setBounds(100, 100, 600, 500);
        frame.setVisible(true);
    }
}

2 个答案:

答案 0 :(得分:0)

您可以先查看Custom Painting Approaches

它显示了两种常用的自定义绘画方法。

  1. 将对象存储在ArrayList
  2. 直接绘制到BufferedImage
  3. 示例显示如何绘制具有指定颜色的Rectangle。

    修改代码以绘制圆和线应该相对简单,因为它们也只需要一个起点和终点。

    绘制三角形会更复杂。

答案 1 :(得分:0)

您可以做的第一件事是创建ActionListener,以便在单击按钮时执行回调。在构造函数中,您可以执行以下操作:

    drawButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            System.out.println("hello");
        }
    });
每次点击绘图按钮时,你都会注意到stdout,'你好'将打印。

请参阅@ camickr的答案,了解如何实际绘制形状的工作。