GroupLayout, nie widać komponentów :(

0

Witajcie,
dopiero zaczynam przygodę z Javą i mam problem z którym od kilku godzin nie mogę sobie poradzić, szukałem w necie próbowałem z innym layoutem ale tam też nie wychodziło więc wziąłem kolejny.
Nie wyświetla mi w ogóle komponentów w ramce. Pewnie to trywialny błąd ale strasznie mi przeszkadza bo zatrzymalem się na warstwie widoku i jak grochem o sciane.

public class DelayMainFrame extends JFrame{

	private JPanel mainPanel;
	
	
	
	public DelayMainFrame() {  //constructor
		
		Toolkit kit = Toolkit.getDefaultToolkit();
		Dimension screenDimension = kit.getScreenSize();
		setSize(screenDimension.width/2, screenDimension.height/2);
		setLocationByPlatform(true);
		//LayoutManager2 manager = new BasicSplitPaneUI.BasicVerticalLayoutManager();
		
		//Components creation
				
		JTextField signalNameTextField = new JTextField("<Put the signal name here>",20);
		JLabel signalNameTextFieldLabel = new JLabel("Signal name", SwingConstants.RIGHT);
		
		JTextField blockNameTextField = new JTextField("<Put the block name here>",20);
		JLabel blockNameTextFieldLabel = new JLabel("Block name", SwingConstants.RIGHT);
		
		JComboBox iaComboBox = new JComboBox();
		iaComboBox.setEditable(true);
		iaComboBox.addItem("IS");
		iaComboBox.addItem("IA");
		
		//adding components to the panel
		mainPanel = new JPanel();
        GroupLayout layout = new GroupLayout(mainPanel);
        mainPanel.setLayout(layout);
        layout.setAutoCreateGaps(true);
        layout.setAutoCreateContainerGaps(true);
        
        layout.setHorizontalGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(LEADING)   //s1
                    .addComponent(signalNameTextFieldLabel)     //p1
                    .addComponent(blockNameTextFieldLabel))     //p2
                .addGroup(layout.createParallelGroup(LEADING)          //s2
                    .addComponent(signalNameTextField)                 //p1
                    .addComponent(blockNameTextField))                 //p2
                .addComponent(iaComboBox)
                            );
        
        //layout.linkSize(SwingConstants.HORIZONTAL);
        
        layout.setVerticalGroup(layout.createSequentialGroup()
        		      .addGroup(layout.createParallelGroup(BASELINE)
        		           .addComponent(signalNameTextFieldLabel)
        		           .addComponent(signalNameTextField)
        		      )
        		      .addGroup(layout.createParallelGroup(BASELINE)
        		    	   .addComponent(signalNameTextFieldLabel)
           		           .addComponent(signalNameTextField)
           		           .addComponent(iaComboBox)
        		      )) ;    
         		     
	
        setTitle("Signal delay tool by DRZ");
        //pack();

		try {
		UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel");
		SwingUtilities.updateComponentTreeUI(DelayMainFrame.this);
		}
		
		catch (Exception e)
		{
			e.printStackTrace();
		}
		
		
	}  // end constructor

public class HelloWorld {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		//System.out.println("Hello World!");
		EventQueue.invokeLater(new Runnable() {
		
			public void run() {
				DelayMainFrame myFrame = new DelayMainFrame();
				myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				myFrame.setVisible(true);
			}
		});
	}

}

Chodzi mi o to żeby był taki układ na tą chwilę (potem dodam więcej ale na razie nawet to nie wychodzi):

Signal name (label) | [put the signal name here] (text field)
Block name (label) | [put...] | IS/IA combo box

Proszę o pomoc bo ugrzązłem, próbowałem layout zmieniać ale nie chcę znów tego robić bo ten wygląda na w miarę uniwersalny.
Pozdrówki

0

Dodajesz komponenty do mainPanel, ale samego mainPanel nie wyświetlasz.

0

mógłby mnie ktoś oświecić jak mam ten panel wyświetlić? ( w tym wcześniejszym gridlayout nie musiałem tego robić i było widać panel)
Pomóżcie plis bo na prawde nie mam pomysła już, a siedzieć nad 1 rzeczą jakiś czas powoduje że nic się już nie wymyśli od pewnego momentu..

0

Gdzieś w konstruktorze (po utworzeniu mainPanel)

add(mainPanel);
0

ok, jak przyjdę z roboty to przetestuję. Dzięki !

0

Super, poszło, działa, dzięki wielkieee jak nie wiem co !
ps tylko zastanawia mnie fakt czemu nie musiałem dodawać mainPanel przy GridBagLayout bo działało..

0

Inne menadżery (np. GridBagLayout) nie wymagają podania kontenera (panelu) jako argumentu konstruktora. Zatem zapewne nie tworzyłeś obiektu mainPanel, a komponenty dodawałeś wprost do głównego okna.

0

Takimi rzeczami się nie przejmujesz jeśli korzystasz z GUI Builder'a, ale wszystko ma swoje wady i zalety.

1 użytkowników online, w tym zalogowanych: 0, gości: 1