我需要在屏幕上放置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);
答案 0 :(得分:14)
尝试以下示例。请注意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();
}
});
}
}
答案 1 :(得分:3)
我知道最简单的方法是使用自己的布局管理器嵌套JPanel。