MacとWindowsの両方で動作する必要のあるプログラムを作成しました。GUIに関しては、Windowsでは問題ないように見えますが、MacではJFrameが小さすぎます。私は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);
前もって感謝します!