Установка максимального размера JFrame при запуске приложения - PullRequest
5 голосов
/ 27 февраля 2012

Я хочу установить максимальный размер JFrame при запуске приложения. Проблема в том, что если разрешение экрана больше, мой кадр становится больше, но в это время он не должен пересекать определенный максимальный диапазон, но тот же случай отлично работает с низким разрешением.

Как будто я хочу, чтобы мой кадр был максимально (500,500), поэтому я написал этот фрагмент кода:

JFrame frame = new JFrame("FRAME TRANSPARENT");
frame.setSize((int)(Toolkit.getDefaultToolkit().getScreenSize().getWidth()-50), (int)(Toolkit.getDefaultToolkit().getScreenSize().getHeight()-150));
frame.setMaximizedBounds(new Rectangle(0,0 , 500, 500)); 
frame.setVisible(true);

Даже когда я установил Bound, JFrame рассматривает метод setSize, и похоже, что он пренебрегает методом setMaximizedBounds. Я уже пробовал с методом setMaximumized, но получил тот же вывод.

Ответы [ 3 ]

6 голосов
/ 07 мая 2013

Я попробовал, и вы настолько правы, что setMaximumSize() не работает .. все эти годы не могли этого узнать !!! В основном мои требования по ограничению размера фиксируются на setResizable(false), хотя я вижу, что у вас есть конкретный запрос о минимальных и максимальных размерах, которые могут отличаться

Работал над решением для вас, хотя:

public class MaxSizeUI
{
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new MaxSizeUI().makeUI();
            }
        });
    }

    public void makeUI() {
        final JFrame frame = new JFrame("Sample Fram") {

            @Override
            public void paint(Graphics g) {
                Dimension d = getSize();
                Dimension m = getMaximumSize();
                boolean resize = d.width > m.width || d.height > m.height;
                d.width = Math.min(m.width, d.width);
                d.height = Math.min(m.height, d.height);
                if (resize) {
                    Point p = getLocation();
                    setVisible(false);
                    setSize(d);
                    setLocation(p);
                    setVisible(true);
                }
                super.paint(g);
            }
        };
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 150);
        frame.setMaximumSize(new Dimension(400, 200));
        frame.setMinimumSize(new Dimension(200, 100));
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
}
2 голосов
/ 27 декабря 2015

Одно из возможных решений:

Dimension DimMax = Toolkit.getDefaultToolkit().getScreenSize();
frame.setMaximumSize(DimMax);

frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
0 голосов
/ 27 февраля 2012

использовать размерDimension d=getMaximumSize(); Frame.setSize(d.width, d.height);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...