加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – JPanel周围不需要的边框

发布时间:2020-12-15 08:31:06 所属栏目:Java 来源:网络整理
导读:我正在创建一个带有JPanel的表单,用于某些图形和一些用于控制该事物的按钮.出于某种原因,我必须指定JPanel比我想放入的实际图形宽10 px,高30 px.是什么导致这个问题? 这是代码: public class Window { public Sheepness sheepness; public ButtonPanel but
我正在创建一个带有JPanel的表单,用于某些图形和一些用于控制该事物的按钮.出于某种原因,我必须指定JPanel比我想放入的实际图形宽10 px,高30 px.是什么导致这个问题?

这是代码:

public class Window {
 public Sheepness sheepness;

 public ButtonPanel buttonPanel;
 public PaintPanel paintPanel;
 public JFrame frame;

 public Window(Sheepness sheepness) {
  this.sheepness = sheepness;

  frame = new JFrame("Sheepness simulation");
  frame.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
  //frame.setSize(width,height);

  BorderLayout frameLayout = new BorderLayout();
  JPanel background = new JPanel(frameLayout);
  background.setBorder(BorderFactory.createEmptyBorder(5,5,5));

  buttonPanel = new ButtonPanel(this);
  background.add(BorderLayout.SOUTH,buttonPanel.buttonBox);

  paintPanel = new PaintPanel(this);
  paintPanel.setPreferredSize(new Dimension(320,240));
  background.add(BorderLayout.CENTER,paintPanel);

  frame.getContentPane().add(background);
  frame.pack();
  frame.setResizable(false);
  frame.setVisible(true);
 }
}

public class PaintPanel extends JPanel {
 public Window window;

 public PaintPanel(Window window) {
  this.window = window;
 }

 @Override
 public void paintComponent(Graphics g) {
  g.setColor(Color.blue);
  g.fillRect(0,320,240);
 }
}

屏幕截图的首选尺寸为320 x 240:

Can’t find source image http://www.cmbi.ru.nl/~estens/Sheepness/Sheepness_simulation_border.png.

您可以看到320 x 240 fillRect未完全填充JPanel,宽度为10 px且高度保持30 px的边框.

屏幕截图的首选尺寸为310 x 210:

Can’t find source image http://www.cmbi.ru.nl/~estens/Sheepness/Sheepness_simulation_noBorder.png.

现在它完全适合320 x 240 fillRect!

有任何想法吗?

解决方法

不同的布局管理器使用不同的规则来计算实际的托管控件大小,即只有在对其调用’setPreferredSize()’时,才能指望该面板具有特定的大小.

请随意检查所有目标布局管理器的javadoc,以获取有关每种特定情况下使用的算法的更多详细信息.

另请注意,您可以避免使用布局管理器,并通过’setBounds()’方法绝对定义所有大小.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读