【问题标题】:Move JFrame for right display of JCombobox移动 JFrame 以正确显示 JCombobox
【发布时间】:2013-10-11 09:47:40
【问题描述】:

我编写了一个 JFrame,它添加了一个 JPanel,这添加了我的 JCombobox。 我的问题是,在我更改框架大小之前,JCombobox 不会正确显示。

这是我的代码:

    /* JFrame */
    frame = new JFrame("Frame");
    frame.setBounds(0, 0, 900, 800);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);

    /* JPanels */
    panel = new JPanel();
    panel.setBounds(frame.getBounds());
    panel.setVisible(true);
    panel.setLayout(null);
    panel.addMouseListener(m);

    /* JComboBox */
    String comboBoxListe[] = { "1", "2", "3" };
    JComboBox chooser = new JComboBox(comboBoxListe);
    chooser.setSize(200, 25);
    chooser.setLocation(30, 30);
    chooser.setVisible(true);

    panel.add(chooser);
    frame.add(panel);

谁能看到我做错了什么? 感谢您的帮助:)

【问题讨论】:

  • 您使用的是什么版本的 Java?相同的代码似乎工作正常。看起来问题比你提出的要多。
  • 您认为还有什么问题?

标签: java swing user-interface jframe jcombobox


【解决方案1】:

JFrame 在添加组合框之前可见

frame.setVisible(true);

确保它出现在组件添加之后

Swing 是为 layout managers 设计的 - 在这里使用一个

【讨论】:

  • +1 因为我认为 setVisible 导致了问题。但也建议使用布局管理器,因为这确实是这里的根本问题。
  • 感谢它运行良好。但是我认为使用 frame.repaint() 也可以正常工作,我有一个(未在此处发布)。而且我正在使用布局管理器...
  • @InformatikBabo, BUT I thought that would work fine too with a frame.repaint() - 任何时候向可见的 GUI 添加/删除组件时,都需要调用 revalidate()(调用布局管理器)然后 repaint()(绘制组件)在他们的新尺寸/位置)。您只需要在更改的面板上执行此操作,而不是框架。
猜你喜欢
  • 2012-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-29
  • 2014-02-17
  • 1970-01-01
相关资源
最近更新 更多