Position on Screen Right Bottom

后端 未结 2 901
星月不相逢
星月不相逢 2020-12-06 19:04

I need to position JFrame on my screen. But I can\'t make them appear on the right side of the screen bottom.

Please can someone explain me how to position them, if

相关标签:
2条回答
  • 2020-12-06 20:02

    Try the example below. Note how pack() "Causes this Window to be sized to fit the preferred size and layouts of its subcomponents."

    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();
                }
            });
        }
    }
    
    0 讨论(0)
  • 2020-12-06 20:02

    The easiest way I know is to nest JPanels each using its own layout manager.

    • The main JPanel would use a BorderLayout
    • Another JPanel that is added to the main at BorderLayout.SOUTH position also uses BorderLayout.
    • the component that needs to go at the SE corner is added to the above JPanel at the BorderLayout.EAST position.
    • In general, you're almost always better off using layout managers vs. trying to set absolute position of components.
    0 讨论(0)
提交回复
热议问题