【问题标题】:JPanel won't get painted with paintComponentJPanel 不会被paintComponent 绘制
【发布时间】:2014-01-28 04:59:03
【问题描述】:

它根本不会画画,有什么想法吗? 后面板上什么都没有显示,如何使用 mouseDragged 事件进行绘画?

我什至无法显示一行...这是源代码...我添加了 Jbutton 只是为了查看 Panel 是否实际正在显示

public class pinta extends JFrame {

HandlerClass handler=new HandlerClass();
    JPanel back=new JPanel();
    public pinta(){
        setSize(500,500);
        setResizable(true);
        getContentPane().setLayout(new BorderLayout());
        back.setBackground(Color.white);
        back.setSize(500,500);
        this.add(back);
        back.add(new JButton("test"));
        back.addMouseMotionListener(handler);
        back.setOpaque(true);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }    

    public void paintComponent(Graphics g){
        super.paintComponents(g);
        g.setColor(Color.black);

        Graphics2D g2d = (Graphics2D)g;
        g2d.fillOval(100, 100, 20, 10);
        g2d.setPaintMode();
        g2d.setStroke(new BasicStroke(1));

    }

    public class HandlerClass implements MouseMotionListener{
        int x, y;

        public int getX() {
            return x;
        }
        public void setX(int x) {
            this.x = x;
        }
        public int getY() {
            return y;
        }
        public void setY(int y) {
            this.y = y;
        }
        public void mouseDragged(MouseEvent e) {
            x=e.getX();
            y=e.getY(); 
        }
        public void mouseEntered(MouseEvent e){ 
        }

        public void mouseMoved(MouseEvent e) {
        }
    }
}

【问题讨论】:

    标签: java swing graphics jframe paintcomponent


    【解决方案1】:

    JFrame 没有方法调用paintComponent。如果你使用@Override注解,编译器会失败。

    另外请注意,您正在调用super.paintComponents - 注意末尾的“s”,这应该是问题的交互者

    JComponent(或扩展JComponentJPanel)是您所追求的。

    查看Performing Custom Painting了解更多详情

    我还应该提到back.setSize(500,500) 是无关紧要的,因为布局管理器将决定它想要制作组件的大小

    【讨论】:

    • 你今天似乎很开心。我看过的每一个问题都是。我想这只是那些日子之一:D
    • @peeskillet 工作缓慢……我说出来了吗?
    猜你喜欢
    • 2021-04-14
    • 2014-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-10
    相关资源
    最近更新 更多