Hallo,
hab ein kleines Programm (lauffähiges) geschrieben, welches einen Button an die Größe der Parent- Componente JPanel anpasst,
Mein Problem ist jetzt, dass ich mehrere Buttons auf dem Panel plazieren will und wenn ich das Panel in der Größe ändere, dann sollen sich die Button auch in Relation ändern,
Hat jemand einen Idee wie ich das vernünftig lösen könnte?
Vielen Dank für Antworten,
lg
Michl
hab ein kleines Programm (lauffähiges) geschrieben, welches einen Button an die Größe der Parent- Componente JPanel anpasst,
Mein Problem ist jetzt, dass ich mehrere Buttons auf dem Panel plazieren will und wenn ich das Panel in der Größe ändere, dann sollen sich die Button auch in Relation ändern,
Hat jemand einen Idee wie ich das vernünftig lösen könnte?
Vielen Dank für Antworten,
lg
Michl
Code:
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.LayoutManager;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Main {
public Main() {
final JFrame frame= new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension(500, 500));
panel.setBackground(Color.RED);
JButton button = new JButton("hallo1");
button.setPreferredSize(new Dimension(130, 50));
button.setLocation(140, 70);
panel.add(button);
JButton button1 = new JButton("hallo2");
button1.setPreferredSize(new Dimension(100, 30));
button1.setLocation(10, 20);
panel.add(button1);
panel.setLayout(new FlexiblePanel(button1));
frame.add(panel);
frame.setBounds(500, 10, 500, 500);
frame.setVisible(true);
}
public static void main(String[] args) {
new Main();
}
private class FlexiblePanel implements LayoutManager {
private final Dimension d;
private final JButton button;
public FlexiblePanel(final JButton button) {
this.button = button;
d = new Dimension(1440, 900);
}
@Override
public void layoutContainer(Container c) {
// Problem
button.setLocation(c.getWidth()/6, c.getHeight()/6);
button.setSize(c.getWidth()/3, c.getHeight()/3);
}
@Override
public void removeLayoutComponent(Component comp) {}
@Override
public void addLayoutComponent(String text, Component comp) {}
@Override
public Dimension minimumLayoutSize(Container c) {return d;}
@Override
public Dimension preferredLayoutSize(Container c) {return d;}
}
}