繁体   English   中英

JButton定位,不出现

[英]JButton positioning, does not appear

在我的代码中,我有一个JFrame可以打开一个主菜单,在该菜单中您可以单击选项,这将带您进入选项菜单。 在该选项菜单上,我想创建一个后退按钮,将其放置在屏幕左上角的某个位置。 当我运行程序并转到选项菜单时,JButton不会出现。 我的代码一定有问题。 有什么帮助吗? 下面是我首先声明JButton的位置。

    static JButton optionsBackButton = new JButton("<html><font size = 5 
           color = green>Back</font></html>"); 

这是与JButton有关的代码的另一部分。

    //Options Menu
    JPanel optionsPanel = new JPanel();
    JLabel optionsOptionsTitle = new JLabel("<html><font size = 7 color = blue>Options</font></html>");
    JPanel optionsOptionsTitlePanel = new JPanel();
    JPanel optionsBackButtonPanel = new JPanel();

    optionsPanel.setLayout(null);
    optionsBackButton.setBounds(100,100,50,50);

    optionsBackButtonPanel.add(optionsBackButton);
    optionsOptionsTitlePanel.add(optionsOptionsTitle);
    optionsPanel.add(optionsOptionsTitlePanel);
    optionsPanel.add(optionsBackButtonPanel);

    optionsBackButton.addActionListener(this);

    //Add panels to the card
    panel.add("Home Screen", homePanel);
    panel.add("Options Menu", optionsPanel);
    //card.add("Game screen", gamePanel);
    cardLayout.show(panel, "HomeScreen");
    contentPane.add(panel);

您的问题源于您使用null布局。 注意:

JPanel optionsBackButtonPanel = new JPanel(); // holds the back button
                                              // but never given a size

optionsPanel.setLayout(null);    // uh oh,.... bad news
optionsBackButton.setBounds(100,100,50,50);   // yes you set the bounds of the button

optionsBackButtonPanel.add(optionsBackButton);
optionsOptionsTitlePanel.add(optionsOptionsTitle);
optionsPanel.add(optionsOptionsTitlePanel);
optionsPanel.add(optionsBackButtonPanel);  // again, optionsBackButtonPanel 
                              // has been never given a size or location/bounds

optionsBackButton.addActionListener(this);

因此,您可以设置按钮的边界并将其添加到使用默认FlowLayout的JPanel中,因此边界是没有意义的。 然后,将从未设置其边界的JPanel添加到使用空布局的JPanel。 因此optionsBackButtonPanel将永远不会显示。

解决方案: 不要使用null布局 ,而是学习和使用布局管理器。

尽管null布局和setBounds()似乎是Swing新手创建复杂GUI的最简单和最佳方法,但您创建的Swing GUI越多,使用它们时就会遇到更大的困难。 当GUI调整大小时,它们不会调整组件的大小;它们是要增强或维护的皇家女巫;放置在滚动窗格中时,它们会完全失败;在所有平台或与原始分辨率不同的屏幕分辨率下查看时,它们看起来都是令人毛骨悚然的。

从这里开始: 在容器教程中布置组件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM