1
ich eine modale jframe
als Worker-Thread auf einem anderen JFrame mit diesem Code haben:Positionieren eines modalen JFrame
final JDialog loading = new JDialog(this);
JPanel p1 = new JPanel(new BorderLayout());
JLabel label = new JLabel("Please wait...", JLabel.CENTER);
p1.add(label, BorderLayout.CENTER);
loading.setUndecorated(true);
loading.getContentPane().add(p1);
loading.pack();
loading.setSize(300,100);
loading.setLocationRelativeTo(this);
loading.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
loading.setModal(true);
SwingWorker<Void, Void> worker = new SwingWorker<Void, Void>() {
/* code */
};
worker.addPropertyChangeListener(new PropertyChangeListener() {
/* code */
});
worker.execute();
loading.setVisible(true);
Problem ist, dass Java findet, dass „bitte warten ...“ Fenster in der Mitte des Elternteils. Ich möchte in den Boden oder woanders setzen. Ich habe dafür keine Positionsmethode gefunden. Bitte lassen Sie mich wissen, ob es so etwas gibt.
den Dialog verwenden Zentrieren ist genau das, was die [ 'setLocationRelativeTo'] (https://docs.oracle.com/ javase/8/docs/api/java/awt/Window.html # setLocationRelativeTo-java.awt.Component-) Methode macht. Wenn Sie es am unteren Rand platzieren möchten, verwenden Sie [setLocation] (https://docs.oracle.com/javase/8/docs/api/java/awt/Window.html#setLocation-java.awt. Punkt-) Methode. Ermitteln Sie zuerst die Position des übergeordneten Frames mit ['getLocationOnScreen'] (https://docs.oracle.com/javase/8/docs/api/java/awt/Component.html#getLocationOnScreen--) und subtrahieren Sie dann die Größe Ihres Dialogs, damit es am unteren Rand erscheint – msrd0