Search code examples
javaswingjtextfieldlayout-manager

JTextField Width


The textfield is wider than I want, I've tried changing the number in the new JTextField("", 5) part but it doesn't affect the width it has when I open the frame

    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){

        }
    }

EDIT:

I've changed the layout from bestellenOnderdelen.setLayout(new BoxLayout(bestellenOnderdelen, BoxLayout.Y_AXIS)); to bestellenOnderdelen.setLayout(new FlowLayout()); but now I face another problem, how do I give the panel a fixed width and variable height?


Solution

  • This is happening most probably due to the LayoutManager. Try a different layout manager like GridBagLayout, which is much more flexible. You may also want to override the getPreferredSize() method in the JTextField.