Sylvihasi Geschrieben 31. März 2006 Geschrieben 31. März 2006 Hallo, ich habe in meinem Programm einige JTextFields auf meinen Panels angeordnet. Nun möchte ich jedoch, dass diese nur eine bestimmte Größe (Länge) haben. public JTextField txf_test; txf_test = new JTextField(6); txf_test.setText("BlaBla"); Mein txf_test wird jedoch viel länger dargestellt und ich kann auch viel mehr eingeben. Wie kann ich es so ändern, dass in das txf_test nur 6 Zeichen eingegeben werden können und es auch nur so groß angezeigt wird ? Ich habe es auch schon mit der java.swing.text.PlainDocument class wie auf: http://www.codeguru.com/java/articles/444.shtml beschrieben versucht aber irgendwie ändert sich nichts und zusätzlich wird meine Texteingabe herausgelöscht bzw. nicht mehr angezeigt. //txf_test.setDocument(new JTextFieldLimit(6)); Cu Sylvi :confused: Zitieren
Morbid_Soul Geschrieben 1. April 2006 Geschrieben 1. April 2006 Hi, wie Du schon bemerkt hast, tut der Konstruktor von JTextfield nicht das was du erwartet hast. Soweit ich weiß, dient der Konstruktor nur dazu, dass das Textfeld seine gewünschte Größe innerhalb eines GridLayouts kennt. Wie Du es anzeigen lässt, dass es nur die Breite für 6 Zeichen anzeigt hängt vom Layout das du verwendest ab. (Breite wäre nur bei Schriften wie Courier fix?) Die Klasse JTextFieldLimit diu Du da verwendest sollte allerdings funktionieren. Habe sie jetzt nicht kopiert und ausprobiert, nehme aber mal an, dass sie zuverlässig funktioniert. Bist Du dir sicher, dass Du sie fehlerfrei in Deinen Source übernommen hast? Eigentlich sollte kein Text gelöscht werden. Das das textfeld keinen Text anzeigt, könnte daran liegen, dass der Text der eingefügt werden soll länger als 6 Zeichen ist. Wie befüllst Du das Textfeld? Nur durch manuelle Eingaben? Wird das mit Werten aus einer DB oder einer File gefüllt? Hängen da vielleicht Leerzeichen dran oder so? (Eventuell vorher String.trim() verwenden o.ä.) Gruß, Peter Zitieren
HinkerAndreas Geschrieben 3. April 2006 Geschrieben 3. April 2006 Fixe Größe festlegen!!! JTextField jtf = new JTextField(); jtf.setColumns(6); Zitieren
Jaraz Geschrieben 3. April 2006 Geschrieben 3. April 2006 Fixe Größe festlegen!!! JTextField jtf = new JTextField(); jtf.setColumns(6); Was dasselbe macht wie: txf_test = new JTextField(6); http://de.geocities.com/uweplonus/faq/swing.html#zeichenBeschraenken oder mit JFormattedTextField arbeiten. (seit JDK 1.4) new JFormattedTextField(new MaskFormatter("******")) Gruß Jaraz Zitieren
Sylvihasi Geschrieben 4. April 2006 Autor Geschrieben 4. April 2006 Hallo, hier der Quellcode verkürzt: :mod: import javax.swing.*; import java.awt.*; import java.awt.event.*; public class TestLayout extends JFrame { public TestLayout() {init();} private JPanel MainPanel, CenterPanel, EastPanel, CenterNorthPanel, CenterCenterPanel, CenterSouthPanel; private JPanel CenterCenterNorthPanel, CenterCenterCenterPanel, CenterSouthNorthPanel, CenterSouthCenterPanel; private JMenuBar mb_funktions; private JMenu m_file, m_info; private JMenuItem mi_close; private JTextField txf_sorttxt3, txf_sorttxt4, txf_sorttxt5, txf_barcode, txf_s, txf_error; private JTextField txf_e, txf_mf_new, txf_mf_old, txf_sortart1, txf_sortart2, txf_sortart3, txf_sortart4; private JTextField txf_sortart5, txf_sorttxt1, txf_sorttxt2, txf_nb, txf_print, txf_sf_new, txf_sf_old; private JLabel lb_ausgabe, lb_barcode, lb_bspausgabe, lb_bspe, lb_s, lb_empty1; private JLabel lb_empty2, lb_error, lb_e, lb_mf_new, lb_mf_old, lb_sort, lb_sortart; private JLabel lb_sorttxt, lb_nb, lb_print, lb_sf_new, lb_sf_old; private JButton btn_checkezn; private void init() { MainPanel = new JPanel(); CenterPanel = new JPanel(); EastPanel = new JPanel(); CenterNorthPanel = new JPanel(); CenterCenterPanel = new JPanel(); CenterSouthPanel = new JPanel(); CenterCenterNorthPanel = new JPanel(); CenterCenterCenterPanel = new JPanel(); CenterSouthNorthPanel = new JPanel(); CenterSouthCenterPanel = new JPanel(); mb_funktions = new JMenuBar(); m_file = new JMenu(); m_info = new JMenu(); mi_close = new JMenuItem(); lb_empty1 = new JLabel(); lb_bspe = new JLabel(); lb_e = new JLabel(); lb_s = new JLabel(); lb_sort = new JLabel(); lb_sortart = new JLabel(); lb_sorttxt = new JLabel(); lb_ausgabe = new JLabel(); lb_empty2 = new JLabel(); lb_bspausgabe = new JLabel(); lb_mf_new = new JLabel(); lb_mf_old = new JLabel(); lb_sf_new = new JLabel(); lb_sf_old = new JLabel(); lb_print = new JLabel(); lb_nb = new JLabel(); lb_barcode = new JLabel(); lb_error = new JLabel(); txf_e = new JTextField(31); txf_s = new JTextField(2); txf_mf_new = new JTextField(); txf_mf_old = new JTextField(); txf_sf_new = new JTextField(); txf_sf_old = new JTextField(); txf_print = new JTextField(); txf_barcode = new JTextField(); txf_nb = new JTextField(); txf_error = new JTextField(); txf_sortart1 = new JTextField(1); txf_sorttxt1 = new JTextField(31); txf_sortart2 = new JTextField(1); txf_sorttxt2 = new JTextField(31); txf_sortart3 = new JTextField(1); txf_sorttxt3 = new JTextField(31); txf_sortart4 = new JTextField(1); txf_sorttxt4 = new JTextField(31); txf_sortart5 = new JTextField(1); txf_sorttxt5 = new JTextField(31); btn_checkezn = new JButton(); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); setName("frame"); setSize(500, 450); setJMenuBar(mb_funktions); mb_funktions.add(m_file); mb_funktions.add(m_info); m_file.add(mi_close); MainPanel.setLayout(new BorderLayout()); MainPanel.add(CenterPanel, BorderLayout.CENTER); MainPanel.add(EastPanel, BorderLayout.EAST); getContentPane().add(MainPanel, BorderLayout.CENTER); CenterPanel.setLayout(new BorderLayout()); CenterPanel.add(CenterNorthPanel, BorderLayout.NORTH); CenterPanel.add(CenterCenterPanel, BorderLayout.CENTER); CenterPanel.add(CenterSouthPanel, BorderLayout.SOUTH); EastPanel.add(btn_checkezn); CenterNorthPanel.setLayout(new GridLayout(3, 2, 1, 1)); CenterNorthPanel.add(lb_empty1); CenterNorthPanel.add(lb_bspe); CenterNorthPanel.add(lb_e); CenterNorthPanel.add(txf_e); CenterNorthPanel.add(lb_s); CenterNorthPanel.add(txf_s); CenterCenterPanel.setLayout(new BorderLayout()); CenterCenterPanel.add(CenterCenterNorthPanel, BorderLayout.NORTH); CenterCenterPanel.add(CenterCenterCenterPanel, BorderLayout.CENTER); CenterCenterNorthPanel.add(lb_sort); CenterCenterCenterPanel.setLayout(new GridLayout(6, 2, 1, 1)); CenterCenterCenterPanel.add(lb_sortart); CenterCenterCenterPanel.add(lb_sorttxt); CenterCenterCenterPanel.add(txf_sortart1); CenterCenterCenterPanel.add(txf_sorttxt1); CenterCenterCenterPanel.add(txf_sortart2); CenterCenterCenterPanel.add(txf_sorttxt2); CenterCenterCenterPanel.add(txf_sortart3); CenterCenterCenterPanel.add(txf_sorttxt3); CenterCenterCenterPanel.add(txf_sortart4); CenterCenterCenterPanel.add(txf_sorttxt4); CenterCenterCenterPanel.add(txf_sortart5); CenterCenterCenterPanel.add(txf_sorttxt5); CenterSouthPanel.setLayout(new BorderLayout()); CenterSouthPanel.add(CenterSouthNorthPanel, BorderLayout.NORTH); CenterSouthPanel.add(CenterSouthCenterPanel, BorderLayout.CENTER); CenterSouthNorthPanel.add(lb_ausgabe); CenterSouthCenterPanel.setLayout(new GridLayout(9, 2)); CenterSouthCenterPanel.add(lb_empty2); CenterSouthCenterPanel.add(lb_bspausgabe); CenterSouthCenterPanel.add(lb_mf_new); CenterSouthCenterPanel.add(txf_mf_new); CenterSouthCenterPanel.add(lb_mf_old); CenterSouthCenterPanel.add(txf_mf_old); CenterSouthCenterPanel.add(lb_sf_new); CenterSouthCenterPanel.add(txf_sf_new); CenterSouthCenterPanel.add(lb_sf_old); CenterSouthCenterPanel.add(txf_sf_old); CenterSouthCenterPanel.add(lb_print); CenterSouthCenterPanel.add(txf_print); CenterSouthCenterPanel.add(lb_barcode); CenterSouthCenterPanel.add(txf_barcode); CenterSouthCenterPanel.add(lb_nb); CenterSouthCenterPanel.add(txf_nb); CenterSouthCenterPanel.add(lb_error); CenterSouthCenterPanel.add(txf_error); lb_bspe.setText("1234567890123456789012345678901"); lb_e.setText("E-Nr.:"); lb_s.setText("S-Nr:"); lb_sort.setFont(new Font("MS Sans Serif", 1, 14)); lb_sort.setText("Sort-Texte"); lb_sortart.setText("Sort-Text-Art/code"); lb_sorttxt.setText("Sort-Text"); lb_bspausgabe.setText("1234567890123456789012345"); lb_ausgabe.setFont(new Font("MS Sans Serif", 1, 14)); lb_ausgabe.setText("Ausgabeformen"); lb_mf_new.setText("Ma-Form new"); lb_mf_old.setText("Ma-Form old"); lb_sf_new.setText("So-Form new"); lb_sf_old.setText("So-Form old"); lb_print.setText("Druck-Form"); lb_barcode.setText("Barcode-Form"); lb_nb.setText("Nb"); lb_error.setText("Fehler"); txf_s.setText("AA"); //txf_controlbyte.setDocument(new JTextFieldLimit(2)); txf_mf_new.setEditable(false); txf_mf_old.setEditable(false); txf_sf_new.setEditable(false); txf_sf_old.setEditable(false); txf_print.setEditable(false); txf_barcode.setEditable(false); txf_nb.setEditable(false); txf_error.setEditable(false); btn_checkezn.setText("Eingabe pr\u00fcfen"); btn_checkezn.setAlignmentX(0.5F); m_file.setText("Datei"); m_info.setText("Info"); mi_close.setText("close"); mi_close.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { mi_closeActionPerformed(evt); } }); setVisible(true); pack(); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent we) { System.out.println("Closing Window ..."); System.exit(0); } }); } public static void main(String args[]) { TestLayout tl = new TestLayout(); tl.setVisible(true); tl.init(); } } jede Sort-Text-Art : 1 Zeichen S-Nr: 2 Zeichen jeder Sort-Text : 31 Zeichen E-Nr: 31 Zeichen ______________________________________________ Leider brauche ich aber genau die Anordnung, also vielleicht hat noch einer ne Ahnung. LG Sylvi Zitieren
HinkerAndreas Geschrieben 4. April 2006 Geschrieben 4. April 2006 Beim GridLayout werden die Komponenten immer in gleicher Größe dargestellt. Vielleicht probierst as mal mit einem anderen Layout. FlowLayout ??? Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.