Hi!

Does anybody know how to group JLabel and JTextField in order to get a single component?

Thanks!

Dani AI

Generated

was on the right track: the cleanest, most reusable solution is a small wrapper that bundles a JLabel and a JTextField into one Swing component so it behaves like a single bean to parent layouts. The wrapper should encapsulate layout and expose only the API that callers need (for example getText, setText, enabling/disabling, and a way to access the inner JTextField for advanced uses).

A minimal example:

public class LabeledField extends JPanel {
    private final JLabel label;
    private final JTextField field;

    public LabeledField(String labelText, int columns) {
        label = new JLabel(labelText);
        field = new JTextField(columns);
        label.setLabelFor(field);
        setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
        add(label);
        add(Box.createHorizontalStrut(6));
        add(field);
    }

    public String getText() { return field.getText(); }
    public void setText(String text) { field.setText(text); }
    public JTextField getField() { return field; }

    @Override
    public void setEnabled(boolean enabled) {
        super.setEnabled(enabled);
        label.setEnabled(enabled);
        field.setEnabled(enabled);
    }
}

Practical tips: use label.setLabelFor(field) and setDisplayedMnemonic(...) for accessibility; expose the underlying JTextField (via getField) when callers need listeners or validation (DocumentListener, InputVerifier); control spacing with borders or Box.createHorizontalStrut; let the parent layout handle column alignment for multi-row forms (use GridBagLayout or GroupLayout on the form container, not by hardcoding sizes inside each wrapper). Avoid overriding painting or preferred-size behavior unless alignment problems demand it. This pattern turns a label+field pair into a single, testable, and reusable component suitable for forms and complex layouts — exactly what was aiming for.

Recommended Answers

All 2 Replies

1. Create a new class that contains a label and a textfield and write the necessary constructor(s) and other methods.
2. If you just want it for positioning etc, put them both in a JPanel

Ok, good ideas, thank you!

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.