Date: Tue, 27 Dec 2005 22:44:19 +0800 From: Huang wen hui <hwh@gddsn.org.cn> To: java <java@freebsd.org> Subject: getLocation() problem when using -Dawt.toolkit=sun.awt.X11.XToolkit under JDK1.5.0-p2 Message-ID: <43B15343.5@gddsn.org.cn>
next in thread | raw e-mail | index | archive | help
hi, When JFrame resize, JFrame.getLocation() will return same location. using MToolkit or using JDK1.4.2 do not have this problem. there is the little samples: #cat WelcomeFrame.java import java.awt.*; import java.awt.event.*; import javax.swing.*; public class WelcomeFrame extends JFrame { JPanel contentPane; BorderLayout borderLayout1 = new BorderLayout(); JMenuBar jMenuBar1 = new JMenuBar(); JMenu jMenuFile = new JMenu(); JMenuItem jMenuFileExit = new JMenuItem(); JMenu jMenuHelp = new JMenu(); JMenuItem jMenuHelpAbout = new JMenuItem(); /** * Construct the frame */ public WelcomeFrame() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); try { jbInit(); } catch (Exception e) { e.printStackTrace(); } } /** * Component initialization * * @throws Exception exception */ private void jbInit() throws Exception { contentPane = (JPanel) this.getContentPane(); contentPane.setLayout(borderLayout1); this.setTitle("Welcome to JBuilder"); this.addComponentListener(new ComponentAdapter() { public void componentResized(ComponentEvent e) { this_componentResized(e); } }); this.setJMenuBar(jMenuBar1); this.setSize(new Dimension(400, 300)); jMenuFile.setText("File"); jMenuFileExit.setText("Exit"); jMenuFileExit.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jMenuFileExit_actionPerformed(e); } }); jMenuFile.add(jMenuFileExit); jMenuHelp.setText("Help"); jMenuHelpAbout.setText("About"); jMenuHelpAbout.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jMenuHelpAbout_actionPerformed(e); } }); jMenuHelp.add(jMenuHelpAbout); jMenuBar1.add(jMenuFile); jMenuBar1.add(jMenuHelp); } /** * Overridden so we can exit when window is closed * * @param e WindowEvent */ protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { System.exit(0); } } /** * File | Exit action performed * * @param e ActionEvent */ public void jMenuFileExit_actionPerformed(ActionEvent e) { System.exit(0); } /** * Help | About action performed * * @param e ActionEvent */ public void jMenuHelpAbout_actionPerformed(ActionEvent e) { } public void this_componentResized(ComponentEvent e) { if(this.isShowing()){ System.out.println("JFrame location: " + this.getLocation()); System.out.println("JFrame locationOnScreen: " + this.getLocationOnScreen()); } } } #cat WelcomeApp.java import java.awt.*; import javax.swing.UIManager; public class WelcomeApp { boolean packFrame = false; /** * Construct the application */ public WelcomeApp() { WelcomeFrame frame = new WelcomeFrame(); //Pack frames that have useful preferred size info, e.g. from their layout //Validate frames that have preset sizes if (packFrame) frame.pack(); else frame.validate(); // Center the frame Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = frame.getSize(); if (frameSize.height > screenSize.height) frameSize.height = screenSize.height; if (frameSize.width > screenSize.width) frameSize.width = screenSize.width; frame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2); frame.setVisible(true); } /** * Main method * * @param args String[] */ static public void main(String[] args) { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch(Exception e) { e.printStackTrace(); } new WelcomeApp(); } } output: JFrame location: java.awt.Point[x=600,y=450] JFrame locationOnScreen: java.awt.Point[x=600,y=450] JFrame location: java.awt.Point[x=600,y=450] JFrame locationOnScreen: java.awt.Point[x=0,y=34] JFrame location: java.awt.Point[x=600,y=450] JFrame locationOnScreen: java.awt.Point[x=600,y=450]
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?43B15343.5>