如何在Java中获得面板的大小?

发布于 2025-02-01 16:32:22 字数 146 浏览 2 评论 0原文

我尝试使用panel.getSize(),但它说java.awt.dimension [width = 0,高度= 0]

我尝试了panel.getheight (),但它说是0

I tried to get with the panel.getSize() but it said java.awt.Dimension[width=0,height=0]

I tried panel.getHeight() but it said it is 0

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

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

绮烟 2025-02-08 16:32:22

您获得0x0尺寸的原因是:

您确实声明了比Jframe和Jpanel更早发现尺寸的

我这样做的:

JPanel panel = new JPanel();
System.out.println(panel.getSize()); // <-- This Line Triggers Earlier
panel.setVisible(true); // <-- Then This Line Renders the Panel, but late to recognize

要解决此问题,请确保在获取大小的信息之前先渲染所有对象

JPanel panel = new JPanel();
panel.setVisible(true); // <-- Then This Line Renders the Panel first before recognizing
System.out.println(panel.getSize()); // <-- This Line Triggers Output Size

:您的选择,我的实例是Mouselistener):

 import java.awt.Event.*;

        panel.addMouseListener(new MouseAdapter() {
        
        @Override
        public void mousePressed(MouseEvent me) {
          System.out.println("Size: " + panel.getSize());
            panel.repaint(); //This refreshes when user tries to resize
        }
    });

用于示例:

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

class Main {
  public static void main(String[] args) {
    JFrame frame = new JFrame("Hello world");
    frame.setSize(300, 300);
    frame.setLocation(5, 5);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    //JPanel Created
    JPanel panel = new JPanel();
    //You are getting 0x0 because you did first
    //System.out.println("Size: " + panel.getSize());
    panel.setVisible(true);
    frame.add(panel);
    frame.setVisible(true);
    
    //Solution: Get Value by event of your choice
    //My instance is to use mouseListener mousePressed
    panel.addMouseListener(new MouseAdapter() {
    
    @Override
    public void mousePressed(MouseEvent me) {
      System.out.println("Size: " + panel.getSize());
        panel.repaint();
    }
});
  }
}

如果有帮助的话,请竖起大拇指。 gladge

The Reason why your getting 0x0 as dimension is:

You did declaration to find size earlier than JFrame and JPanel to render

I assume you Did This:

JPanel panel = new JPanel();
System.out.println(panel.getSize()); // <-- This Line Triggers Earlier
panel.setVisible(true); // <-- Then This Line Renders the Panel, but late to recognize

To Fix this, Just Make Sure to Render All Objects First before getting the Info for size:

JPanel panel = new JPanel();
panel.setVisible(true); // <-- Then This Line Renders the Panel first before recognizing
System.out.println(panel.getSize()); // <-- This Line Triggers Output Size

Bonus(in order to get info infinitely by using Listener of your choice, My Instance is MouseListener):

 import java.awt.Event.*;

        panel.addMouseListener(new MouseAdapter() {
        
        @Override
        public void mousePressed(MouseEvent me) {
          System.out.println("Size: " + panel.getSize());
            panel.repaint(); //This refreshes when user tries to resize
        }
    });

for sample:

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

class Main {
  public static void main(String[] args) {
    JFrame frame = new JFrame("Hello world");
    frame.setSize(300, 300);
    frame.setLocation(5, 5);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    //JPanel Created
    JPanel panel = new JPanel();
    //You are getting 0x0 because you did first
    //System.out.println("Size: " + panel.getSize());
    panel.setVisible(true);
    frame.add(panel);
    frame.setVisible(true);
    
    //Solution: Get Value by event of your choice
    //My instance is to use mouseListener mousePressed
    panel.addMouseListener(new MouseAdapter() {
    
    @Override
    public void mousePressed(MouseEvent me) {
      System.out.println("Size: " + panel.getSize());
        panel.repaint();
    }
});
  }
}

Give a thumbs up if it helps. Gladge

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文