Как написать программу для разных операционных систем?

Написал программу на java 1.8 Использую swing. Работаю под Windows Если программу запустить на Linux оказывается, что толщина рамок Frame в Linux отличается от толщины рамки в Windows. Из-за этого всё изображение во Frame справа и внизу на несколько пикселей не влезает. Как можно решить эту проблему?

Дополнение: Вы посоветовали использовать pack(), вот я написал такой вариант

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;

public class MainWindow extends JPanel {
    private BufferedImage background;
    private MainWindow() throws IOException {
            load();
            setLayout(null);
            setBounds(0,0,576,676);
            JLabel myLabel = new JLabel();
            myLabel.setIcon(new ImageIcon(background));
            myLabel.setBounds(0,0,576,676);
            add(myLabel);

            JFrame win = new JFrame();
            win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            win.setMinimumSize(new Dimension(300,300));
            //win.setLayout(null);
            win.add(this);
            win.pack();
            win.setVisible(true);
    }
    private void load(){
        try {
            background = ImageIO.read(getClass().getResourceAsStream("Pole3.png"));
        }
        catch (IOException ez){}
    }

    public static void main(String[] args) throws IOException {
        MainWindow mw = new MainWindow();
    }
}

Окно не растягивается, что я сделал не так? В чём ошибка?


Ответы (1 шт):

Автор решения: Roman Konoval

Быстрое и простое решение: чтобы изменить размер окна учитывая содержимое - используйте метод pack после того, как созданы все компоненты.

frame.pack();

Это приведет к изменению размеров окна учитывая рамки и будет работать на любой системе и с любыми настройками шрифтов, масштабирования и т.д.

→ Ссылка