Feld breiter, als mit setColumns() angegeben

Status
Nicht offen für weitere Antworten.

Marsman

Bekanntes Mitglied
Hallo Ihr!

Warum wird ein JTextField breiter angezeigt, als es mit setColumn() angegeben wurde. Ich habe zum Beispiel 10 "Spalten" angegeben. Wenn ich nun in das Feld Text eingebe, scheint es aber eher 15 Zeichen breit zu sein. (Ich habe meinen Code mal angehängt).

Titus

Code:
import java.awt.GridBagLayout;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;
import java.awt.GridBagConstraints;
import javax.swing.JTextField;

public class ColumnTest extends JFrame {

	private JPanel jContentPane = null;
	private JLabel jLabel = null;
	private JTextField jTextField = null;

	public ColumnTest() {
		super();
		initialize();
	}

	private void initialize() {
		this.setSize(300, 200);
		this.setContentPane(getJContentPane());
		this.setTitle("JFrame");
	}

	private JPanel getJContentPane() {
		if (jContentPane == null) {
			GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
			gridBagConstraints1.fill = GridBagConstraints.VERTICAL;
			gridBagConstraints1.gridy = 0;
			gridBagConstraints1.weightx = 1.0;
			gridBagConstraints1.gridx = 1;
			GridBagConstraints gridBagConstraints = new GridBagConstraints();
			gridBagConstraints.gridx = 0;
			gridBagConstraints.gridy = 0;
			jLabel = new JLabel();
			jLabel.setText("JLabel");
			jContentPane = new JPanel();
			jContentPane.setLayout(new GridBagLayout());
			jContentPane.add(jLabel, gridBagConstraints);
			jContentPane.add(getJTextField(), gridBagConstraints1);
		}
		return jContentPane;
	}

	private JTextField getJTextField() {
		if (jTextField == null) {
			jTextField = new JTextField();
			jTextField.setColumns(10);
		}
		return jTextField;
	}

	public static void main(String args[]) {
		ColumnTest frame = new ColumnTest();
		frame.setVisible(true);
	}
}
 

The_S

Top Contributor
Weil die Breite nichts mit der Anzahl der dargestellten Anzahl an Buchstaben zu tun hat!
 
S

SlaterB

Gast
doch doch, das kommt schon hin,
vielleicht nicht bei jeder Schriftgrößen- + Layoutänderung,
aber zumindest am Anfang in dem angegebenen Programm

der Richtbuchstabe ist das m, es passen genau 10 m rein

Code:
     protected int getColumnWidth() {
        if (columnWidth == 0) {
            FontMetrics metrics = getFontMetrics(getFont());
            columnWidth = metrics.charWidth('m');
        }
        return columnWidth;
    }

    /**
     * Returns the preferred size <code>Dimensions</code> needed for this 
     * <code>TextField</code>.  If a non-zero number of columns has been
     * set, the width is set to the columns multiplied by
     * the column width. 
     *
     * @return the dimension of this textfield
     */
    public Dimension getPreferredSize() {
        Dimension size = super.getPreferredSize();
        if (columns != 0) {
            Insets insets = getInsets();
            size.width = columns * getColumnWidth() +
                insets.left + insets.right;
        }
        return size;
    }
 

Marsman

Bekanntes Mitglied
Achsoooooo. :wink:

Ich hatte es bisher immer mit Ziffern ausprobiert. Aber 1234567890 ist im proportionalen Font schmaler als mmmmmmmmmm. Ich wusste nicht, dass das m als Basis angenommen wird.

Dabei fällt mir noch eine andere Frage ein: Macht es überhaupt sinn, setColumns mit GridBagConstraints zu kombinieren? Oder benutzt ihr lieber setPreferedSize()? Manche benutzen sogar Padding oder Weight des Constraints. Mir ist noch nicht klar, wo die Vorteile der 4 Varianten liegen, die Breite einer Komponente festzulegen. Bzw. was benutzt ihr am liebsten?


Titus
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Jose05 einfache GUI mit schwarzem Feld AWT, Swing, JavaFX & SWT 12
J vom Dialogfenster ein Feld des Hauptfenster einlesen AWT, Swing, JavaFX & SWT 2
D JavaFX Leuchtendes großes Feld? AWT, Swing, JavaFX & SWT 2
KilledByCheese 2D-Grafik Feld automatisch bewegen, in zeitabständen AWT, Swing, JavaFX & SWT 7
N Swing microba - DatePicker: Feld-Hintergrund anpassen AWT, Swing, JavaFX & SWT 2
N Custom JButton Feld aus Parent lesen lassen AWT, Swing, JavaFX & SWT 11
R Swing JComboBox - Null-Feld AWT, Swing, JavaFX & SWT 7
D SWT StyledText-Feld Validieren??? AWT, Swing, JavaFX & SWT 3
B in jList feld aus einem objekt anzeigen AWT, Swing, JavaFX & SWT 2
N Minesweeper: 2D Feld von JButtons anlegen AWT, Swing, JavaFX & SWT 19
E Feld aktualisieren AWT, Swing, JavaFX & SWT 8
B Graues Feld unter JComboBox AWT, Swing, JavaFX & SWT 2
N Feld wird nicht gezeichnet. Probleme mit Swing AWT, Swing, JavaFX & SWT 7
Paule Popup oder Dialog-Feld mit eigenem Inhalt AWT, Swing, JavaFX & SWT 9
M JTextField kontrollieren, sobald das Feld verlassen wird AWT, Swing, JavaFX & SWT 3
D Textumbruch in einem TextArea Feld AWT, Swing, JavaFX & SWT 5
J Einzelnes Feld in JTable färben AWT, Swing, JavaFX & SWT 2
R Name von Feld nicht ereichbar AWT, Swing, JavaFX & SWT 7
O JFileChooser - Zugriff auf Dateiname-Feld und Save-Button? AWT, Swing, JavaFX & SWT 6
R Verhindern das Inhalt in JScrollPane breiter ist als JScrollPane..? AWT, Swing, JavaFX & SWT 10
1 Warum sind JButtons viel breiter als der enthaltene Text ? AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben