Ustawienie textfieldów w Javie

0

Cześć, chciałbym aby mój efekt końcowy był taki:
* https://zapodaj.net/6c9b23e4ca891.png.html
a wychodzi mi coś takiego:
* https://zapodaj.net/9f9fb3fd972fd.png.html
Mój kod:

JPanel pLD = new JPanel(new FlowLayout(FlowLayout.LEFT));
		JPanel panel = new JPanel(new GridLayout(3, 3, 2, 2));
		for (int a = 1; a < 10; a++) {
			panel.add(new JButton("" + a));
		}
		pLD.add(panel);

		JPanel pRD = new JPanel(new FlowLayout(FlowLayout.RIGHT));
		JPanel panel2 = new JPanel(new GridLayout(3, 1, 2, 4));
		JTextField jtf1 = new JTextField("To jest JTextField");
		JTextField jtf2 = new JTextField("To jest JTextField");
		JTextField jtf3 = new JTextField("To jest JTextField");
		jtf1.setBorder(BorderFactory.createLineBorder(Color.ORANGE));
		jtf1.setSize(100, 100);
		jtf2.setBorder(BorderFactory.createLineBorder(Color.ORANGE));
		jtf3.setBorder(BorderFactory.createLineBorder(Color.ORANGE));
		panel2.add(jtf1);
		panel2.add(jtf2);
		panel2.add(jtf3);
		pRD.add(panel2);

		JPanel pD = new JPanel();
		pD.setLayout(new GridLayout(1, 2));

		pD.add(pLD);
		pD.add(pRD);

Mógłby mi ktoś powiedzieć w jaki sposób mogę odsunąć te textfieldy od krawędzi frame'a? Może ten layout nie jest odpowiednim rozwiązaniem do tego?
Dodatkowo chciałbym aby one były dłuższe i nie ograniczały się do napisu, myślałem, że może wpisany setSize zadziała lecz niestety nie.

0

new FlowLayout(FlowLayout.RIGHT) nie rozumiem czemu sie dziwisz że są doklejone do prawej strony ;)

0

To akurat zostawiłem bo próbowałem kilku wariantów, czy mógłbyś mi powiedzieć jaki Layout pozwoli mi na oddalenie elementów od prawej krawędzi Frame'a? Dlaczego metoda setSize odnośnie TextField'u nie działa? Jest na to inny sposób?

0

Co do wielkości TextField'u:

JTextField jtf1 = new JTextField("To jest JTextField", 30);
0

setSize działa, ale jak ustawisz sobie jakiś szczególny layout (np. grid) to oczywiście ten rozmiar nie będzie brany pod uwagę.
Zalecam lekturę np. https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html

0

Staram się to rozczytać ale wciąż nie wiem, czy mogę te textfieldy z mojego kodu wycentrować tak jak na załączonym screenie? Zależy mi też na tym aby długość nie sięgała do krawędzi...

0

No to na tym głownym panelu w ktorym masz texfieldy daj FlowLayout.CENTER a każdy texfield z osobna wstaw dodatkowo w panel.

0

Zgadza się, mam jeszcze dwa pytanka co do tego, czy rozszerzanie się danego komponentu (w moim przypadku textfield) wraz ze zmianą rozmiaru frame'a (ruch myszką) jest zależny od stylu czy od ustawienia danego komponentu? Chciałbym aby zmieniały swoje rozmiary i położenie, rozmiar mogę ustalić w konstruktorze ale jest on stały i się nie zmienia pod wpływem ruchu myszki.

0

@Krzywy Samiec no to musiałbyś sobie ustawić layout tych dodatkowych paneli które opakowują twoje texfieldy.

0

Tzn ja zrobiłem teraz tak:

Panel1 -> FlowLayout.CENTER
Panel2 na TextFieldy -> GridLayout
Panel1.add(Panel2)

O tym mowisz?

0

Na przykład. Wtedy będą się skalować razem z całym oknem, chociaż nie jestem pewien czy dokładnie tak jakbyś chciał :P

0

No właśnie dobrze mi to wyśrodkowało ale jest problem z poszerzaniem się tych textfieldów, więc wybrałem nie taki styl co trzeba?

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