Screen position bottom right

I need to position a JFrame on my screen. But I can not make them appear on the right side of the screen.

Please can someone explain to me how to arrange them, if you can describe how to do this, it would be great.

Here is the code so far.

//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); 
+6
source share
2 answers

Try the example below. Notice how pack() "Makes this Window size fit the size and layout 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(); } }); } } 
+13
source

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

  • The main JPanel will use BorderLayout
  • Another JPanel added to the core in BorderLayout.SOUTH also uses BorderLayout.
  • the component that should go in the corner of SE is added to the above JPanel in the position of BorderLayout.EAST.
  • In general, you are almost always better at using layout managers and trying to establish the absolute position of the components.
+3
source

Source: https://habr.com/ru/post/911007/


All Articles