【问题标题】:JTextField WidthJTextField 宽度
【发布时间】:2014-03-17 18:51:19
【问题描述】:

文本字段比我想要的要宽,我尝试更改 new JTextField("", 5) 部分中的数字,但它不会影响我打开框架时的宽度

    if (eventSource == bestelOnderdelen) {
        ArrayList<Integer> onderdeelNrs = new ArrayList<Integer>();
        ArrayList<String> onderdeelOmschrijving = new ArrayList<String>();
        for (int i = 0; i < modelOnderdelen.getRowCount(); i++) {
            if ((boolean) modelOnderdelen.getValueAt(i, 0)) {
                onderdeelNrs.add(Integer.parseInt((String)modelOnderdelen.getValueAt(i, 1)));
                onderdeelOmschrijving.add((String) modelOnderdelen.getValueAt(i, 2));
            }
        }

        bestellenOnderdelen = new JPanel();
        bestellenOnderdelen.setLayout(new FlowLayout());
        bestellenOnderdelen.add(new JLabel("Hoeveel wilt u van de volgende artikelen bestellen?"));

        for(Integer a: onderdeelNrs){
            bestellenOnderdelen.add(new JLabel(Integer.toString(a)+" "+onderdeelOmschrijving.get(onderdeelNrs.indexOf(a))));
            bestellenOnderdelen.add(new JTextField("", 5));
        }

        if(JOptionPane.showConfirmDialog(null, bestellenOnderdelen) == JOptionPane.YES_OPTION){

        }
    }

编辑:

我已将布局从bestellenOnderdelen.setLayout(new BoxLayout(bestellenOnderdelen, BoxLayout.Y_AXIS)); 更改为bestellenOnderdelen.setLayout(new FlowLayout());,但现在我面临另一个问题,如何为面板提供固定宽度和可变高度?

【问题讨论】:

  • Columns 只设置首选宽度。需要通过setSize手动设置宽度或者修改布局
  • 您需要通过 setSize 手动设置宽度 不,您永远不会对组件进行任何手动调整大小(或定位)

标签: java swing jtextfield layout-manager


【解决方案1】:

这很可能是由于LayoutManager 而发生的。尝试使用不同的布局管理器,例如 GridBagLayout,它更加灵活。您可能还想覆盖JTextField 中的getPreferredSize() 方法。

【讨论】:

  • 我现在已经将它设置为 FlowLayout,但现在我还有一个问题:如何给面板一个固定高度和可变高度?
  • 只需覆盖面板中的getPreferredWidth()方法即可。在被覆盖的方法return new Dimension(super.getPreferredSize().width, yourPreferredHeight) 中。如果只想限制 JFrame 的大小,请查看 JFrame 中的 setMinimumSize() 方法。
猜你喜欢
  • 2016-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-05
  • 2011-09-18
  • 2023-03-11
  • 2011-02-23
  • 1970-01-01
相关资源
最近更新 更多