Rozciąganie komonentów

0

Witam. Tworzę sobie GUI w swingu i napotkałem na pewien problem. Mianowicie chcę, aby użytkownik miał możliwość zmiany rozmiaru okna programu. Jednak gdy tego dokona to wszystkie komponenty się nie dostosowują do nowego rozmiaru tylko pozostają w dziwnych miejscach i praktycznie całe okno wygląda fatalnie. Jak zrobić aby po zmianie rozmiaru okna przez użytkownika wszystkie komponenty dostosowały się do nowego rozmiaru?

0

Jakiego używasz menadżera rozkładu?

0

Chodzi o te layouty? To borderLayout

0

Masz odpowiedź. Border layout tego nie wspiera bo zakłada sztywne wymiary.

0

Ok poradziłem sobie jakoś. Użyłem GirdLayout i fakt, dla buttonów np. działa to ok. Ale jeśli mam w programie obrazek to go nie rozciąga. Dlaczego? Oto kod:

public TVSet() {
		super("TV Set");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(400, 100, 640, 480);
		setResizable(true);
		setIconImage(Toolkit.getDefaultToolkit().getImage("C:\\Users\\Piotr\\Desktop\\ikona.jpg"));
		setLayout(new GridLayout(1,1));
		add(new ImageComponent());
	}
	
	class ImageComponent extends JPanel {
		
		private Image image;
		
		public ImageComponent() {
			try {
				image = ImageIO.read(new File("C:\\Users\\Piotr\\Desktop\\logo.jpg"));	
			} catch(IOException e) {
				e.printStackTrace();
			}
		}
		
		@Override
		public void paint(Graphics g) {	
			super.paint(g);
			g.drawImage(image, 0, 0, 640, 100, this);
		}
	}
} 

Dodaje:

add(new ImageComponent());

i obrazek wyświetla się w oknie, jednak na niego rozciąganie nie działa tak jak np. na new JButton();

0

Postanowiłem jednak wrzucić obrazek na JLabel. Mam z tym jednak problem:

		ImageIcon img = new ImageIcon("C:\\Users\\Piotr\\Desktop\\logo.jpg");
		JLabel logo = new JLabel(img);
		getContentPane().add(logo); 

Obrazek jest większy niz JLabel i wyświetla mi się na nim tylko fragment. Jak dostosować rozmiar obrazka do JLabela?

0

I jak pomoże ktoś? Mam też problem z tym, że nawet jak zmienię rozmiar tego obrazka i wyświetla się dobrze. To po rozciągnięciu co prawda dostosowuje się, że np. cały czas jest na środku, ale nie rozszerza się na boki. Czyli moje pytania brzmią:

  1. Jak zrobić aby obrazek nakładany na JLabel sam dostosował swój rozmiar do wielkości JLabela?
  2. Jak zrobić, aby po rozciąganiu okna, JLabel rozciąga się ok, ale obrazek na niego nałożony nie zwiększa swojego rozmiaru. Da się to jakoś zrobić?

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