当前位置: 首页 > 面试题库 >

Java setBounds无法与JPanel一起使用

曹和正
2023-03-14
问题内容

我在用Java做一个小Gui。我正在使用setBounds方法在JFrame上设置按钮等的位置,但是问题是,当我将JPanel按钮与JFrame一起使用时,在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);

当我将按钮添加到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);

请帮我解决这个小问题


问题答案:

问题是,当您使用绝对定位时,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);

从没有布局管理器的情况开始

尽管没有布局管理器也是可以的,但您应该尽可能使用布局管理器。布局管理器使调整与外观依赖的组件外观,不同的字体大小,容器的变化大小以及不同的语言环境变得更加容易。

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

请参阅《布局管理器视觉指南》。



 类似资料:
  • 问题内容: 我的程序应该等待按下向左或向右箭头键,然后更改一个值,以便下次更新PaintComponent时,屏幕看起来有所不同。但是,运行该程序时,屏幕没有变化。 以下是变量声明: 这是主要的KeyListener声明: 这是用于绘画的方法: 当我运行该程序时,该程序会打印外壳,但是当我按箭头键时,屏幕上没有任何变化。 问题答案: 您需要先将关键侦听器添加到组件,然后才能调用它: 您还需要使组件

  • 问题内容: click事件可以正常运行,但是onmouseover事件不起作用。 问题答案: 您需要大写一些字母。

  • 问题内容: 我需要为我的应用程序读/写锁。我已阅读 https://en.wikipedia.org/wiki/Readers%E2%80%93writer_lock 并写了我自己的类,因为在swift中没有读/写锁 效果很好,直到我尝试从GCD线程使用它。 当我尝试在某个时刻从不同的异步块使用此类时,它允许在写入被锁定时进行写入 这是示例日志: 因此,您可以看到g被锁定,但是objc_sync_

  • 我目前正在将IntelliJ IDE用于复杂的GWT项目。我想在GWT的开发模式中利用JRebel,所以最近我为IntelliJ安装了JRebel插件,但在使其工作时遇到了麻烦。 基本上IntelliJ不具备在更改时自动编译应用程序的能力,所以每当您对代码进行更改时,我都必须进行编译- 信息:使用JavaC1.7.0_21编译java源代码信息:15个错误信息:0个警告信息:编译完成,9分钟5秒内

  • 问题内容: 我使用以下代码将数据发送到MailChimp新闻列表(API v3)。每次我从函数中删除时,它都会尝试通过GET发布数据,并正确发送数据(在MailChimp API仪表板中可以确定响应)。在浏览器(FF)中进行测试时,我得到一个响应为“ true”的.part文件。 我将我的头发拔了出来,任何见识都将受到赞赏。 提前致谢, JN 问题答案: 主要问题是jc在您的原始帖子中评论了什么-

  • 问题内容: http://jsfiddle.net/YcK5X/ 我想知道为什么这个AJAX请求没有返回任何内容。 问题答案: 您想要echo:ed的数据必须在名为html的POST参数中提供: