2016-08-04 21 views
0

Ich mache eine Java-Anwendung, wo Sie neue Konten über ein Formular hinzufügen können, ich benutze das SpringLayout dafür, weil es ordentlich aussieht, aber nach dem Hinzufügen der JTextFields mit der Text davon, bleibt die Taste auf der linken Seite oben, während sie nicht da kommen sollte, ich bin mit SpringUtilities (https://docs.oracle.com/javase/tutorial/uiswing/examples/layout/SpringGridProject/src/layout/SpringUtilities.java)Position der Tasten gehen zu einem seltsamen Ort (SpringLayout)

package dinges.Containers; 

import javax.swing.JButton; 
import javax.swing.JComboBox; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 
import javax.swing.SpringLayout; 

import dinges.Utilities.SpringUtilities; 

@SuppressWarnings("serial") 
public class Addnew extends JPanel { 

    String[] options = {"User", "Accountant", "Administrator", "Developer"}; 

    /** 
    * > Add a text input for the following: 
    * > Id, Name, last name, current balance, and the state. But this has to be in order of the new Account. 
    * > we're just going to be using JTextFields, a JButton for saving and JLabels for writing what it is 
    * 
    **/ 

    public Addnew() { 
     // frame size is WIDTH = 280  ,  HEIGHT =  480 
     SpringLayout layout = new SpringLayout(); 
     setLayout(layout); 

     JButton save = new JButton("Save data"); 
     JTextField name = new JTextField(15); 
     JTextField lastname = new JTextField(15); 
     JComboBox<String> accounttype = new JComboBox<String>(options); 
     JLabel label1 = new JLabel("First name: ", JLabel.TRAILING); 
     JLabel label2 = new JLabel("Last name: ", JLabel.TRAILING); 
     JLabel label3 = new JLabel("Account type: ", JLabel.TRAILING); 
     JLabel label4 = new JLabel("Save data: ", JLabel.TRAILING); 
     label1.setLabelFor(name); 
     label2.setLabelFor(lastname); 
     label3.setLabelFor(accounttype); 




     add(label1); 
     add(name); 
     add(label2); 
     add(lastname); 
     add(label3); 
     add(accounttype); 
     add(save); 
     add(label4); 

     SpringUtilities.makeCompactGrid(this, 3, 2, 6, 6, 6, 6); 
    } 

} 

Dies macht es so aussehen:

enter image description here

Aber die Schaltfläche sollte unter der JComboBox sein und ihre JLabel sollte genau wie die anderen positioniert werden.

Wo ist das Problem hier? Ich habe die Dinge schon eine Weile umgestellt, aber ich kann es wirklich nicht finden.

Antwort

1

die Taste bleibt an der linken oberen

Wo soll es sein?

Ich vermute, es sollte am unteren Rand sein, aber Sie sollten dies als Teil Ihrer Frage angeben, weil wir keine Gedanken Leser sind und nicht wissen, was Sie denken.

ich bin mit SpringUtilities

Haben Sie SpringUtilities sagen, wie viele Zeilen/Spalten, die Sie benötigen?

Haben Sie die Parameter aus dem Demo-Code geändert oder haben Sie einfach den Demo-Code kopiert, ohne ihn zu ändern?

+0

ich dies gar nicht bemerkt gesetzt habe, ich bin es gewohnt, die Dinge selbst Codierung und ich nur die Feder Dienstprogramme nahm, was mir ein Freund erzählt Danke, dass du mich daran erinnerst –

-1

sieht aus wie Sie nicht richtig die richtige Anzahl von Zeilen

// SpringUtilities.makeCompactGrid(p, rows, cols, initX, initY, xPad, yPad); 
    int numPairs = options.length; // 4 
    SpringUtilities.makeCompactGrid(p, numPairs, 2, 6, 6, 6, 6); 
+0

(1-), Ja, das wurde vor einer Stunde vorgeschlagen. Keine Notwendigkeit, die Antwort zu wiederholen. Außerdem hat "Optionen" nichts mit der Anzahl der Zeilen zu tun. Das Array "options" wird für das Kombinationsfeld verwendet. – camickr