我编写了一个需要在 Mac 和 Windows 上运行的程序。就 GUI 而言,它在 Windows 上看起来不错,但 JFrame 在 Mac 上太小了。我使用了 GridBag 布局,没有使用绝对的,这在与此问题类似的答案中已被建议。我尝试过使用 pack() 但它不适用于这个 GUI。它甚至不会调整框架的大小以适应菜单栏。我正在使用 setSize(X, Y) 但有没有办法检查用户是否在 Mac 上,然后相应地更改大小?我也尝试过使用 setMinimumSize() 然后 pack() 但 pack 无论如何都没有做任何事情。
这是我的帧代码位;以防由于 pack() 无法正常工作而出现任何问题。
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) { }
try {
timeCodeMask = new MaskFormatter(" ## : ## : ## : ## ");
} catch(ParseException e) {
errorMessage("Warning!", "Formatted text field hasn't worked, text fields will not be formatted.");
}
try {
activePanel = new JPanelSwapper("src/bg.png");
} catch(IOException e) {
errorMessage("Warning!", "Background image has not loaded, continuing without one.");
}
FPS = 24;
calculatorPanel = calculatorPanel();
converterPanel = converterPanel();
activePanel.setPanel(calculatorPanel());
previousTimes = new TimeStore();
resultTimes = new TimeStore();
previousConversions = new TimeStore();
frame = new JFrame("TimeCode Calculator & Converter");
ImageIcon frameIcon = new ImageIcon("src/frame icon.png");
frame.setIconImage(frameIcon.getImage());
frame.setExtendedState(JFrame.NORMAL);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//frame.setSize(WIDTH, HEIGHT);
//frame.pack();
frame.setMinimumSize(new Dimension(WIDTH, HEIGHT));
frame.pack();
frame.setResizable(false);
frame.setJMenuBar(menuBar());
frame.getContentPane().add(activePanel);
frame.setBackground(Color.WHITE);
frame.setVisible(true);
screen = Toolkit.getDefaultToolkit().getScreenSize();
frame.setLocation((screen.width - WIDTH) / 2, (screen.height - HEIGHT) / 2);
提前致谢!