是什么影响了JFrame for Mac上缩放按钮的启用状态?

时间:2010-07-30 19:46:41

标签: java macos swing jframe

我编写了一个Java程序,根据应用程序状态改变JFrame是否可调整大小。在Windows中,这可以很好地工作,当它可调整大小时,当按钮被禁用时,最大化按钮被启用。但是,在我的Mac上,当我将resizable更改为true时,缩放按钮不会启用但窗口 DOES 变得可调整大小 - 调整大小的抓取器显示。

不幸的是,我无法在一个简单的应用程序中复制此行为。只有在我的复杂应用程序中才会显示。所以我想知道JFrame的可调整大小状态除了启用缩放按钮会影响什么?

1 个答案:

答案 0 :(得分:1)

这是一个简单的示例,显示了Mac OS X上的预期行为;你可以将它与你正在做的事情进行比较。

import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JToggleButton;

public class FrameTest extends JPanel implements Runnable {

    private JFrame f;
    private boolean test;

    public static void main(String[] args) {
        EventQueue.invokeLater(new FrameTest());
    }

    @Override
    public void run() {
        f = new JFrame("Test");
        test = f.isResizable();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.add(this);
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }

    public FrameTest() {
        this.add(new JToggleButton(new AbstractAction("Test") {

            @Override
            public void actionPerformed(ActionEvent e) {
                test = !test;
                f.setResizable(test);
            }
        }));
    }
}