【问题标题】:JComboBox widthJComboBox 宽度
【发布时间】:2011-06-05 11:13:04
【问题描述】:

我创建了一个 jComboBox,但它占用了整个框架的宽度。如何设置固定宽度。

是边框布局用于面板的框架和框布局。我在这里添加代码:

import javax.swing.*;
import java.awt.BorderLayout;

public class Window8  {

    JFrame frame;
    JPanel panel;
    JComboBox combo;
    public void go(){

    String[] option = { "STUDENT", "TEACHER" };

    combo.setPreferredSize(new Dimension(1,25));
    combo = new JComboBox(option);
    menu.setSelectedIndex(0);

    frame = new JFrame("DELETION"); 
    frame.setLocationRelativeTo(null);
    frame.setSize(400, 300);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);

    panel = new JPanel();
    panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS));

    frame.getContentPane().add(BorderLayout.NORTH,panel);
    panel.add(combo);   
}

【问题讨论】:

  • 我已经添加了我的代码。请看一下。
  • 重新格式化的代码;复制编辑;如果不正确,请恢复。

标签: java swing jcombobox dimensions


【解决方案1】:

您可能想使用setSize() 方法。

combo.setSize(200, combo.getPreferredSize().height);

【讨论】:

    【解决方案2】:

    宽度由添加到组合框中的最大项目的宽度自动确定。您可以使用以下命令控制显示:

    comboBox.setPrototypeDisplayValue("text here");
    

    您也可以考虑使用Combo Box Popup 来控制弹出窗口的大小。

    编辑:

    由于您添加了显示您正在使用 BoxLayout 的代码,您可以尝试以下操作:

    comboBox.setMaximumSize( comboBox.getPreferredSize() );
    

    或者你可以这样做:

    JPanel wrapper = new JPanel();
    wrapper.add( comboBox );
    panel.add( wrapper );
    

    阅读 Using Layout Managers 上的 Swing 教程部分,了解这些建议的工作原理。

    【讨论】:

    • setPrototypeDisplayValue 与敏感选项一起使用有助于正确调整 JComboBox 的大小,同时允许它根据容器定义具有不同的大小。谢谢!
    【解决方案3】:

    这是您可以使用框布局执行的操作。

    • 将轴改为线轴,添加
    • 水平胶水,添加刚性区域,
    • 放置组件

    。 下面的代码sn-p:

    panel = new JPanel();
    panel.setLayout(new BoxLayout(panel, BoxLayout.LINE_AXIS));
    panel.add(Box.createHorizontalGlue());
    panel.add(Box.createRigidArea(new Dimension(10, 0)));
    panel.add(combo);
    frame.getContentPane().add(BorderLayout.NORTH, panel);
    

    【讨论】:

      【解决方案4】:

      试试 comboBox.setPreferredWidth(200);或其他一些值来设置宽度

      jzd 是对的。实际API是setPreferredSize(new Dimension(...));

      【讨论】:

      • 我试过但给出了这个错误。 " JComboBox 类型的方法 setPreferredWidth(int) 未定义"
      • 查看API,具体方法是:setPreferredSize(Dimension preferredSize)
      【解决方案5】:

      使用不同的 LayoutManager。试试FlowLayout

      【讨论】:

      • 宽度将根据内容自动确定或使用 setPreferredSize() 或 camickr 的建议。但如果你把它放在一个可以伸展的布局中,那就没关系了。
      猜你喜欢
      • 2011-12-10
      • 2012-06-26
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 2011-10-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多