Guten Tag alle zusammen,
kann mir jemand erklären, warum ein JFrame, das nicht resizable ist, die Position ändert bei setSize()? hier mal ein lauffähiges beispiel:
Würd mich echt mal interessiern.
gruß,
javampir
kann mir jemand erklären, warum ein JFrame, das nicht resizable ist, die Position ändert bei setSize()? hier mal ein lauffähiges beispiel:
Java:
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class Main extends JPanel {
public static void main(String[] args) {
new Main();
}
private final JFrame f = new JFrame("Test");
private int size = 100;
private final Dialog d = new Dialog(f);
public Main() {
super();
setPreferredSize(new Dimension(40 + size, 40 + size));
f.add(this);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.pack();
f.setLocationRelativeTo(f.getParent());
f.setResizable(false);
f.setVisible(true);
}
private void draw() {
setPreferredSize(new Dimension(40 + size, 40 + size));
f.setSize(getPreferredSize());
repaint();
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.fillRect(20, 20, size, size);
}
class Dialog extends JDialog implements ChangeListener {
private final JSlider slid = new JSlider(JSlider.HORIZONTAL, 10, 300, 100);
public Dialog(JFrame p) {
super(p);
slid.addChangeListener(this);
add(slid);
pack();
setLocationRelativeTo(p);
setVisible(true);
}
@Override
public void stateChanged(ChangeEvent e) {
size = slid.getValue();
draw();
}
}
}
Würd mich echt mal interessiern.
gruß,
javampir