当前位置: 首页 > 知识库问答 >
问题:

如何将图形放在JPanel上?

松德曜
2023-03-14

我在向JPanel添加图形时遇到了问题。如果我从panel.add(new graphics())中更改行;添加(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();
   }
}

共有1个答案

管翼
2023-03-14

自定义组件为0x0 px。

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上,并且想知道是否有人可以帮助我。 问题答案: 自定义组件为0x0 px。

  • 我正在创建一个简单的程序,在那里我画一个黑色的椭圆形,在那里我用鼠标点击。然而,我希望一个新的椭圆形出现,旧的消失。我该怎么做?我把removeAll()方法插入到我的mousePressed方法中,但它对我不起作用。removeAll()方法是否适用于此?还是我应该用别的?很抱歉,如果答案很明显,但我仍然是新手,并试图学习。任何建议都将不胜感激。谢谢

  • 问题内容: 我正在使用NetBeans GUI构建器来处理我的布局(我对LayoutManagers很糟糕),并试图放置一个简单的JLabel,以使其始终(水平)居于其父JPanel内部。理想情况下,即使调整了JPanel的大小,这也将保持正确,但是,如果这是一个疯狂的编码,比第一次创建JPanel时居中就足够了。 我自己尝试处理布局已经很糟糕了,但是由于NetBeans GUI Builder自

  • 问题内容: 我想将JPanel中的图像导出到矢量图形文件中,以便可以以高于屏幕的分辨率对其进行编辑和打印。本质上,我希望使用目标图形调用它的功能,该目标图形将绘图命令保存到矢量图形文件中。 有什么好的简单方法呢?推荐哪些库?哪种矢量格式最好,为什么? 问题答案: 看看Java EPS Graphics2D包。 许多Java程序都使用Graphics2D在屏幕上绘制内容,虽然很容易将输出另存为png

  • 问题内容: 在给定的示例中,我想将文本移动到图像和形状下方。请帮我做。 在此示例中,JLable位于面板顶部。我想将其向下移动到图像/形状。 我尝试了,但是没有用。请告诉我我是否缺少什么。 问题答案: 考虑使用API​​的可用功能… 看一眼: 如何使用标签 例如…

  • 我有一个JPanel,在我点击一个按钮后,我希望图标垂直显示,一个在顶部,另一个在底部点击第二个图标,依此类推。 因此,每次点击时,图标位置会在顶部和底部之间交替变化。 我尝试了许多布局经理,但似乎无法让它像我希望的那样工作。 编辑:举例, 第一次点击后; 二次点击, 第三次点击,顶部的另一个图标,依此类推。这样做的目的是添加到我正在创建的国际象棋游戏中。所以我希望死棋子出现在适当的玩家端(黑色或