Re: How to get the current X and Y position of a window?
In article <4a0d0a45$0$31343$9b4e6d93@newsspool4.arcor-online.net>,
marksiz@email.org (Mark Sizzler) wrote:
I can get the current height and width of a window by commands like:
this.getWidth() and this.getHeight()
But how do I get current X and Y position of this window?
Try SwingUtilities#convertPointToScreen():
<http://java.sun.com/javase/6/docs/api/javax/swing/SwingUtilities.html>
<code>
package news;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.GridLayout;
import java.awt.Point;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
/** @author John B. Matthews */
public class GridTest {
private static final int ROWS = 5;
private static final int COLS = 4;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
//@ Override
public void run() {
new GridTest().create();
}
});
}
void create() {
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(ROWS, COLS));
for (int i = 0; i < ROWS * COLS; i++) {
panel.add(new LabelPanel());
}
JFrame f = new JFrame("GridTest");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(panel);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
}
/**
* A LabelPanel has a label showing its current size & location.
*/
class LabelPanel extends JPanel {
private static final String FORE =
"<html><body align=center><b>";
private static final String AFT =
"</b><br><i>ubi in mundum</i></body></html>";
private final JLabel sizeLabel = new JLabel();
private final Point p = new Point();
public LabelPanel() {
this.setPreferredSize(new Dimension(150, 75));
this.add(sizeLabel);
this.addComponentListener(new ComponentAdapter() {
@Override
public void componentResized(ComponentEvent e) {
int w = e.getComponent().getWidth();
int h = e.getComponent().getHeight();
p.setLocation(0, 0);
SwingUtilities.convertPointToScreen(p, sizeLabel);
sizeLabel.setText(FORE
+ "Size: " + w + "\u00d7" + h + "<br>"
+ "Loc: " + p.x + "," + p.y
+ AFT);
}
});
}
}
</code>
--
John B. Matthews
trashgod at gmail dot com
<http://sites.google.com/site/drjohnbmatthews>