屏幕右下角的位置

我需要在屏幕上放置JFrame。 但我无法让它们出现在屏幕底部的右侧。

有人可以解释我如何定位它们,如果你能描述如何做,那就太好了。

这是迄今为止的代码。

//Gets the screen size and positions the frame left bottom of the screen GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice defaultScreen = ge.getDefaultScreenDevice(); Rectangle rect = defaultScreen.getDefaultConfiguration().getBounds(); int x = (int)rect.getMinX(); int y = (int)rect.getMaxY()- frame.getHeight(); frame.setLocation(x ,y - 45); 

试试下面的例子。 请注意pack() “如何调整此Window大小以适合其子组件的首选大小和布局。”

 import java.awt.Dimension; import java.awt.EventQueue; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; import java.awt.Rectangle; import javax.swing.JFrame; import javax.swing.JPanel; /** @see http://stackoverflow.com/q/9753722/230513 */ public class LowerRightFrame { private void display() { JFrame f = new JFrame("LowerRightFrame"); f.add(new JPanel() { @Override // placeholder for actual content public Dimension getPreferredSize() { return new Dimension(320, 240); } }); f.pack(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice defaultScreen = ge.getDefaultScreenDevice(); Rectangle rect = defaultScreen.getDefaultConfiguration().getBounds(); int x = (int) rect.getMaxX() - f.getWidth(); int y = (int) rect.getMaxY() - f.getHeight(); f.setLocation(x, y); f.setVisible(true); } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { new LowerRightFrame().display(); } }); } } 

我知道最简单的方法是使用自己的布局管理器嵌套JPanels。

  • 主JPanel将使用BorderLayout
  • 在BorderLayout.SOUTH位置添加到main的另一个JPanel也使用BorderLayout。
  • 需要在SE角落进行的组件将添加到BorderLayout.EAST位置的上述JPanel中。
  • 一般来说,使用布局管理器与尝试设置组件的绝对位置几乎总是更好。