GroupLayout, nie widać komponentów :(

GroupLayout, nie widać komponentów :(
DR
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 13 lat
  • Postów:4
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.

Kopiuj
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

edytowany 1x, ostatnio: madmike
0

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

DR
dzięki za szybką odpowiedź. ALe jak mam wyświetlać? myślałem że mam zrobić tylko setVisible(true) na rzecz myFrame.. nie wiem za bardzo jak mogę go wyświetlić
DR
wziąłem mainPanel.setVisible(true); ale nic to nie zmienia. W poprzednim layoucie jakim brałem Grid coś tam wyświetlał bez problemu tylko nie tak jak chciałem..
DR
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 13 lat
  • Postów:4
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)

Kopiuj
add(mainPanel);
DR
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 13 lat
  • Postów:4
0

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

DR
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 13 lat
  • Postów:4
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.

KA
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 10 lat
  • Postów:91
0

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


Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.