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

JPanel getpreferredsize()返回10,而不是JFrame的大小减去边框

杜俊远
2023-03-14

我试图得到的大小的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);
  }

} 

共有1个答案

宋嘉禧
2023-03-14

代替

setSize(300, 200);

setPreferredSize(new Dimension(300, 200));

替换

 Dimension size = getPreferredSize();

Dimension size = getSize();
 类似资料:
  • 问题内容: 在Java中,是否可以获得不含标题和其他边框的JFrame的宽度和高度? frame.getWidth()和frame.getHeight()1似乎返回包括边框在内的宽度。 谢谢。 问题答案:

  • 我试图让2支球队互相比赛。当我说团队1.玩(团队2)时,我称之为;当 i 生成的数字小于 0.5 时,team2 应获胜,如果大于 0.5,则团队 1 应获胜。当团队 1 获胜时,它会正确显示为尼克斯,但当团队 2 获胜时,它会显示内存地址。我怎么能让它正确地说网是赢的,而不是team@78987neu73

  • 我为A队按了3分,现在当我从seconActivity回来时,分数显示为0 但是分数仍然是3,因为我把分数作为静态的,所以当我再次按下3按钮时,分数变成了6,但是为什么这里显示为0

  • 我有一个函数,它接收两个大十进制数,即bd1和bd2作为参数。函数应该减去bd1-db2并返回 bd1和bd2的刻度都是2,结果也应该只有2的刻度,但使用减法是按比例缩小到小数点后的完整表示形式。我希望刻度设置为2,并尝试使用setScale,但setScale需要舍入模式,并且不清楚使用哪种舍入模式才能获得限制在刻度2的精确结果 需要的是获得比例为2的精确减去值(bd1-bd2)。在这种情况下,

  • 问题内容: 这是我的发件人实体 当我尝试执行以下查询时: 发生以下错误: 错误:org.hibernate.property.BasicPropertyAccessor- HHH000123:类中的IllegalArgumentException:be.gimme.persistence.entities.Sender,属性的设置方法:senderId 错误:org.hibernate.prope

  • 我正在使用Yaml(和Python!)第一次。我试图从一个.yaml文件中加载多个文档,但没有得到我所期望的结果。我正在期待一个包含每个文档的dicts的dict返回,但却得到了一个生成器对象...?我应该注意到,当我在前面的测试中对单个文档yaml文件使用yaml.load()(而不是load_all())时,我能够很好地取回一个字典。 ...产生以下终端输出: