如何在JPanel上放置图形?

问题描述

自定义组件为0x0 px。

@H_502_2@import java.awt.*; import javax.swing.*; public class Catch { public class MyGraphics extends JComponent { private static final long serialVersionUID = 1L; MyGraphics() { setPreferredSize(new Dimension(500, 100)); } @Override public void paintComponent(Graphics g) { super.paintComponent(g); g.fillRect(200, 62, 30, 10); } } public void createGUI() { final JFrame frame = new JFrame(); JPanel panel = new JPanel(); panel.add(new MyGraphics()); frame.add(panel); frame.pack(); frame.setVisible(true); frame.setDefaultCloSEOperation(JFrame.DISPOSE_ON_CLOSE); } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { Catch GUI = new Catch(); GUI.createGUI(); } }); } }

解决方法

我在向JPanel添加图形时遇到问题。如果我更改从panel.add(new graphics()); 到frame.add(new
graphics());
并且不要将JPanel添加到JFrame,黑色矩形会出现在JFrame上。我只是无法让黑色矩形出现在JPannel上,并且想知道是否有人可以帮助我。

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

 public class Catch{

public class graphics extends JComponent{
    public void paintComponent(Graphics g){
    super.paintComponents(g);
    g.fillRect(200,62,30,10);
    }
}

 public void createGUI(){
    final JFrame frame = new JFrame();
    JPanel panel = new JPanel();
    frame.setSize(500,500);
    frame.addMouseListener(new MouseAdapter(){
        public void mouseClicked(MouseEvent e) {
            System.out.println(e.getPoint().getX());
            System.out.println(e.getPoint().getY());
        }
     });
    panel.add(new graphics());
    frame.add(panel);
    frame.setVisible(true);
    frame.setDefaultCloseOperation(frame.DISPOSE_ON_CLOSE); 
}

public static void main(String[] args){
    Catch GUI= new Catch();
    GUI.createGUI();
   }
}

猜你在找的技术问答相关文章

如何检查配对的蓝牙设备是打印机还是扫描仪(Android)
是否允许实体正文进行HTTP DELETE请求?
如何将ZipInputStream转换为InputStream?
java.util.logging Java 8中的变量
PowerMockito.doReturn返回null
Java中的RESTful调用
Swing / Java:如何正确使用getText和setText字符串
特殊字符和重音字符
Android Studio中的ndk.dir错误
错误“找不到主类”