java window制作简单绘图工具 为什么没有显示啊?

发布于 2022-09-04 19:20:27 字数 3429 浏览 14 评论 0

package Drawing;

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JComboBox;
import java.awt.Font;
import java.awt.Graphics;

import javax.swing.DefaultComboBoxModel;
import javax.swing.JPanel;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Vector;
import java.awt.event.MouseMotionAdapter;
import java.awt.Color;
import javax.swing.border.LineBorder;
import java.awt.Window.Type;

public class DrawingBoard extends JPanel{

private JFrame frmDrawingboard;

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                DrawingBoard window = new DrawingBoard();
                window.frmDrawingboard.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the application.
 */
public DrawingBoard() {
    initialize();
      
}

/**
 * Initialize the contents of the frame.
 */
int x1, y1, x2, y2;  
Vector<Shapes> vectorShapes = new Vector<Shapes>();
private void initialize() {
    frmDrawingboard = new JFrame();
    frmDrawingboard.setResizable(false);
    frmDrawingboard.setTitle("DrawingBoard\r\n");
    frmDrawingboard.getContentPane().setBackground(Color.DARK_GRAY);
    frmDrawingboard.setBounds(100, 100, 464, 350);
    frmDrawingboard.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frmDrawingboard.getContentPane().setLayout(null);
    
    JComboBox comboBox = new JComboBox();
    comboBox.setForeground(Color.RED);
    comboBox.setBackground(Color.BLACK);
    comboBox.setModel(new DefaultComboBoxModel(new String[] {"Line", "Rectangle", "Oval"}));
    comboBox.setFont(new Font("Comic Sans MS", Font.BOLD, 16));
    comboBox.setBounds(345, 280, 102, 21);
    frmDrawingboard.getContentPane().add(comboBox);

    JPanel panel = new JPanel();
    panel.setBorder(new LineBorder(new Color(0, 0, 0), 2, true));
    panel.setBackground(Color.WHITE);

    panel.addMouseListener(new MouseAdapter() {
        @Override
        public void mousePressed(MouseEvent e) {
               x1 = e.getX();  
               y1 = e.getY(); 
               Shapes c =new Shapes();
               switch(comboBox.getSelectedIndex()){
               case -1:c = new Line(x1,y1,x1,y1);break;
               case 0:c = new Rectangle(x1,y1,x1,y1);break;
               case 1:c = new Oval(x1,y1,x1,y1);break;
                } //end switch
                vectorShapes.add(c);
        }
    });
    panel.addMouseMotionListener(new MouseMotionAdapter() {
        @Override
        public void mouseDragged(MouseEvent e) {
             vectorShapes.get(vectorShapes.size()-1).x2 = e.getX();  
             vectorShapes.get(vectorShapes.size()-1).y2 = e.getY();  
             repaint(); 
        }
    });
    panel.setBounds(10, 10, 437, 260);
    frmDrawingboard.getContentPane().add(panel);
}
 protected void paintComponent(Graphics g){  
        g.clearRect(0, 0, getWidth(), getHeight());  
        for(int i = 0; i < vectorShapes.size(); i++)   
        {  
            vectorShapes.get(i).draw(g);  
        }  
    }

}
图片描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文