【问题标题】:Trouble making a GUI. Labels, spinners and buttons not appearing制作 GUI 时遇到问题。标签、微调器和按钮未出现
【发布时间】:2017-07-19 17:03:44
【问题描述】:

我在JFrame 中放入了很多对象。但是,在我将它们主要悬停在按钮以及JTextField 之前,它们中的许多都不会出现。我只包含了JSpinner 组件,所以它不会那么长。我的微调器中是否有任何东西或缺少使它们不会出现的东西? 我已经把它剥离了很多,所以它只是一个文本字段。仍然没有任何显示。我已将所有内容都放在面板中,但仍然没有显示任何内容。

public static void screen() {
    JFrame myFrame = new JFrame("Yore");
    myFrame.setAlwaysOnTop(true);
    myFrame.setResizable(false);
    myFrame.setForeground(Color.BLACK);
    myFrame.setSize(300,365);
    myFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    myFrame.setVisible(true);
    myFrame.setBackground(Color.WHITE);
    JPanel panel = new JPanel();
    myFrame.setContentPane(panel);
    JTextField Username = new JTextField();
    Username.setText("Username");
    Username.setColumns(10);
    panel.add(Username);

    }

【问题讨论】:

  • 1) 为了尽快获得更好的帮助,请发帖 minimal reproducible exampleShort, Self Contained, Correct Example。 2) Java GUI 必须在不同的操作系统、屏幕尺寸、屏幕分辨率等上使用不同的语言环境中的不同 PLAF。因此,它们不利于像素完美布局。而是使用布局管理器,或combinations of them 以及white space 的布局填充和边框。 我的第一个猜测是,这是问题的核心。但我不喜欢猜测 - 所以发布一个 MCVE。
  • 感谢您的帮助。我会记住这一点。感谢您对使用布局管理器的建议,我现在就试试。
  • “你还有什么建议吗?”发布一个 MCVE。
  • 注意:MCVE / SSCCE 不是不可编译的代码 sn-ps。请再仔细阅读文件。

标签: java eclipse swing


【解决方案1】:

对不起,我忘记了 pne 声明。

public static void screen() {
    JFrame myFrame = new JFrame("Yore");
    myFrame.setAlwaysOnTop(true);
    myFrame.setResizable(false);
    myFrame.setForeground(Color.BLACK);
    myFrame.setSize(300,365);
    myFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    myFrame.setVisible(true);
    myFrame.setBackground(Color.WHITE);
    JPanel panel = new JPanel();
    myFrame.setContentPane(panel);
    JTextField Username = new JTextField();
    Username.setText("Username");
    Username.setColumns(10);
    panel.add(Username); 

  panel.validate();

  }

【讨论】:

  • 您先生刚刚为我完成了这项工作!非常感谢您的帮助!
【解决方案2】:

尝试使用框架的布局管理器。此外,将 JPanel 添加到框架并将所有 Spinners 添加到面板。

使用正确的布局管理器,您可以通过编程方式将 Spinner 添加到面板中,这样您就无需对边界进行硬编码。例如,您还可以在窗口调整大小时让它们调整大小。

查看此处以开始使用布局管理器。 https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html

【讨论】:

  • 好的,所以我备份了所有内容并重新开始。但是,在重新添加文本面板后,它仍然没有出现。我什至添加了表单布局,但仍然没有。你还有什么建议吗?
  • 您提供的代码如此有限,很难继续为您提供帮助
【解决方案3】:

myFrame.getContentPane() 返回一个 AWT 容器,而不是 Swing 组件。要改变这一点,你必须使用

JPanel panel = new JPanel();
panel.add(..);
myFrame.setContentPane(panel);
panel.validate();

将您的微调器添加到面板中,您的问题就解决了。

【讨论】:

    【解决方案4】:

    将微调器添加到面板。然后将面板添加到您的 JFrame。

    panel.add(spinner_5);
    

    【讨论】:

      猜你喜欢
      • 2019-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-24
      • 2019-02-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多