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?
Jakiego używasz menadżera rozkładu?
Chodzi o te layouty? To borderLayout
Masz odpowiedź. Border layout tego nie wspiera bo zakłada sztywne wymiary.
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();
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?
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ą:
- Jak zrobić aby obrazek nakładany na JLabel sam dostosował swój rozmiar do wielkości JLabela?
- 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ć?