【问题标题】:Java setBounds not working with JPanelJava setBounds 不适用于 JPanel
【发布时间】:2012-11-29 19:46:52
【问题描述】:

我正在用 java 做一个小 Gui。我正在使用 setBounds 方法在我的 JFrame 上设置按钮等的位置,但问题是当我将它与 JPanel 一起使用时,按钮在 JFrame 上不可见,并且没有 JPanel 它很好,请查看两个代码并请帮助我我是初学者,面临这些愚蠢的问题。

这个很好用

  JFrame jframe = new JFrame("Working Fine");  
  jframe.setLayout(null);  
  JButton jbutton = new JButton("Position Test");  
  jbutton.setBounds(0, 0, 100, 100);  
  jframe.add(jbutton);  
  jframe.setSize(300,300);
  jframe.setVisible(true);

当我将 Button 添加到 Jpanel 时相同的代码然后它不起作用所以有什么问题,请指导我

  JFrame jframe = new JFrame("causing problem ");
  jframe.setSize(300,300);
  JPanel p = new JPanel();
  jframe.setLayout(null);  
  JButton jbutton = new JButton("Position Test");  
  jbutton.setBounds(0, 0, 100, 100);
  jframe.add(p);
  p.add(jbutton);
  p.setVisible(true);
 //jframe.add(jbutton);  
  jframe.setVisible(true);

请帮我解决这个小问题

【问题讨论】:

  • setLayout(null)setBounds(0, 0, 100, 100)setSize(300,300) 是非常糟糕的做法。
  • 你不应该使用空布局。阅读此布局管理器教程:docs.oracle.com/javase/tutorial/uiswing/layout/visual.html
  • 我正在学习 Java,还没有学过 LayoutManagers,我们的老师要求我们在完成 LayoutManagers 之前使用 null,所以没有使用它们。你能指导我这里有什么问题吗?
  • “我们的讲师要求我们在完成 LayoutManagers 之前使用 null” 在他们获得该主题的“最低能力”之前,您的讲师不应指导任何人。任何有的人都不会告诉你使用null 布局。
  • 如果你知道自己在做什么,那么空布局就很好了,伙计们。我的意思是它只是 gui,而标准的 layoutmanagers 真的很烂。如果您想要盒装布局,请转到 html,但是在使用编程语言时,不妨了解如何编写 gui。我的意思是看看一个简单的表单元素看起来多么完美,并将其与摇摆进行比较

标签: java swing jpanel layout-manager


【解决方案1】:

你必须去掉 JPanel 的布局,才能设置绝对位置:

p.setLayout(null);

【讨论】:

  • 我试图用百分比来做一个绝对布局,但直到我尝试了它才起作用。它解决了为什么 setBounds 不起作用的问题,而不是质疑它。
【解决方案2】:

问题是当你使用绝对定位时,JPanel 组件没有默认大小所以不会出现。为了让它出现,你可以这样做

JFrame frame = new JFrame("No Problem");
JPanel panel = new JPanel() {
    @Override
    public Dimension getPreferredSize() {
        return new Dimension(300, 300);
    };
};
panel.setLayout(new FlowLayout(FlowLayout.CENTER));
JButton button = new JButton("Position Test");
panel.add(button);
frame.add(panel);
frame.pack();
frame.setVisible(true);

来自Doing Without a Layout Manager

虽然可以不使用布局管理器,但您应该尽可能使用布局管理器。布局管理器可以更轻松地适应依赖外观的组件外观、不同的字体大小、容器的不断变化的大小以及不同的语言环境。

布局管理器的选择取决于您希望如何布局组件。

A Visual Guide to Layout Managers

【讨论】:

  • 我是学生,还没学,好的,请指导我作为初学者应该使用哪一个,您的回答被接受..谢谢
猜你喜欢
  • 2021-09-28
  • 2013-06-20
  • 1970-01-01
  • 2020-08-03
  • 2012-01-19
  • 2018-07-07
相关资源
最近更新 更多