如何解决JPanel getpreferredsize() 返回 10 而不是 JFrame 减去边框的大小
我正在尝试获取 JPanel 的大小,以便随后可以计算我计划添加的图形的正确尺寸。由于我已将 JFrame 的大小设置为 (300,200),因此我期望 getpreferredsize() 函数返回的值略小于 (300,200)(即减去边框)。但是,该函数只是简单地为高度和宽度返回了 10。请帮忙。
import javax.swing.JFrame;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import java.awt.Graphics;
import java.io.*;
import java.awt.Dimension;
class Main {
public static void main(String[] args) {
Frame f = new Frame();
}
}
class Frame extends JFrame {
public Frame() {
setSize(300,200);
setLocationRelativeto(null);
setTitle("Test Panel Size");
setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setLayout(new BorderLayout());
add(drawPanel,BorderLayout.CENTER);
pack();
drawPanel.printPanelSize();
}
private Panel drawPanel = new Panel();
}
class Panel extends JPanel {
public void printPanelSize() {
Dimension size = getPreferredSize();
int w = size.width;
int h = size.height;
System.out.println("h = " + h + " w = " + w);
}
}
解决方法
替换
setSize(300,200);
与
setPreferredSize(new Dimension(300,200));
并替换
Dimension size = getPreferredSize();
与
Dimension size = getSize();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。