Java zmiana rozdzielczości

0

znalazłem coś takiego

 
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
masz w d.width i d.height rozdzielczosc, no i teraz:
int x = (d.width - 1024) / 2;
int y = (d.height - 768) / 2;

próbowałem dodać do kodu ale jestem jeszcze za czereśniak :D
więc spróbowałem

 
private void RozdzielczoscEkranu()
	{
		Dimension d = Toolkit.getDefaultToolkit().getScreenSize();

		rozdzielczoscX = (d.width);
		rozdzielczoscY = (d.height);
		if (rozdzielczoscX == 1366 && rozdzielczoscY == 768)
		{

			spCalosc.setBounds(0, 0, 1375, 775);

		}
		if (rozdzielczoscX == 1360 && rozdzielczoscY == 768)
		{

		spCalosc.setBounds(0, 0, 1360, 768);

	}
	if (rozdzielczoscX == 1280 && rozdzielczoscY == 768)
		{
			spCalosc.setBounds(0, 0, 1280, 768);

		}
		if (rozdzielczoscX == 1280 && rozdzielczoscY == 720)
		{

			spCalosc.setBounds(0, 0, 1280, 720);

		}
		if (rozdzielczoscX == 1280 && rozdzielczoscY == 600)
		{
		spCalosc.setBounds(0, 0, 1280, 600);

		}
		if (rozdzielczoscX == 1024 && rozdzielczoscY == 768)
		{

			spCalosc.setBounds(0, 0, 1024, 768);

	}
		if (rozdzielczoscX == 800 && rozdzielczoscY == 600)
		{
			spCalosc.setBounds(0, 0, 800, 600);

		}

Co wydaje mi się też czerstwe trochę :D działa to tak, że gdy mam nieodpowiednią rozdziałkę to dodaje JScrollPane.
Więc czy doradzi ktoś coś jakiś rozsądniejszy pomysł, bo mój pewnie jest nienormalny:D
Z góry przepraszam za nieanglojęzyczne nazwy :D dopiero zaczynam więc odpuściłem sobie chwilowo nazwy anglojęzyczne.
I dziękuje za odpowiedź.
btw szukałem w sieci żeby nie było że gotowca szukam:)

0

Nigdy nie używam metody setBounds do ustalenia rozmiarów i położenia na ekranie okna (JFrame). Nie lubię okna w górnym rogu ekranu, więc je centruję

setLocationRelativeTo(null);

Jeżeli rozmiar całego okna (jakiegoś panelu) chcę dostosować do rozdzielczości monitora, to stosuje taki kod:

Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
dim.width-=suma_marginesów_bocznych;
dim.height-=suma_marginesu_górnego_i_dolnego;
setPreferredSize(dim); //dla panelu
//lub
setSize(dim); //dla okna
0

dziękuje bardzo :) a czy w takim zestawienia zawartość paneli powinna wyświetlać się cała, nie utnie zawartości pod wpływem zmiany rozdziałki
układ LM BoxLayout mam dla ramki i paneli

0

Co nazywasz zmianą rozdziałki?

0

przepraszam zmiana rozdzielczości :) bo jeżeli zastosuje LM FlowLayout to jest ok tylko, w jednej klasie odpowiada mi taki rozwiązanie ale w innej potrzebuje sztywnego rozmieszczenia komponentów

0

Co nazywasz zmianą rozdzielczości:

  • użytkownik zmienił ustawienia monitora w czasie pracy programu,
  • użytkownik zmienił monitor w czasie pracy programu,
  • użytkownik zmienił rozmiar okna Twojego programu?
0

ooo :D

  • użytkownik zmienił ustawienia monitora w czasie pracy programu,
0

Zmień użytkownika na rozsądniejszy egzemplarz.
Żaden wypróbowany przeze mnie program nie reaguje zmianę ustawień monitora.

0

to mam rozumieć, że nie da się żeby program działał tak samo na monitorze 15cali jak i 21 lub na rodzielczosci 800x600 i jednocześnie tak samo na 1360x768?

0

W różnych postach piszesz o różnych rzeczach, czym innym jest dopasowanie wielkości okien do rozdzielczości jaka jest ustawiona w chwili startu programu, czym innym jest reagowanie na zmianę rozdzielczości w czasie pracy programu.

ale w innej potrzebuje sztywnego rozmieszczenia komponentów
.
Jeśli to sztywne rozmieszczenie wymaga szerokości co najmniej 1000, to jest oczywiste, że program nie może działać tak samo przy rozdzielczościach 800x600 i 1360x768.

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