我已经看过几种做有神论的方法,但它们似乎都有效,但我只是想知道一种方法是否比另一方更好。
例如,使用名为JFrame
的{{1}}即可:
myFrame
你也可以这样做:
myFrame.add(new JButton("OK"));
其中一个'正确'吗?
答案 0 :(得分:5)
来自JFrame
JFrame类与Frame略有不兼容。与所有其他JFC / Swing顶级容器一样,JFrame包含JRootPane作为其唯一子级。根窗格提供的内容窗格通常应包含JFrame显示的所有非菜单组件。这与AWT Frame案例不同。作为一个commiance add及其变体,remove和setLayout已被覆盖,以便在必要时转发到contentPane。这意味着你可以写:
frame.add(child);
孩子将被添加到contentPane。内容窗格始终为非null。尝试将其设置为null将导致JFrame抛出异常。默认内容窗格将在其上设置BorderLayout管理器。有关添加,删除和设置JFrame的LayoutManager的详细信息,请参阅RootPaneContainer。
所以两者都是等价的,两者都是正确的
答案 1 :(得分:2)
不需要来自Java5
将JComponents
添加到ContentPane
,只需JFrame.add(JComponent)
JFrame
已实施BorderLayout
,然后将myFrame.add(new JButton("OK"));
置于CENTER
区域
答案 2 :(得分:1)
我绝对会说
Container c = myFrame.getContentPane();
c.add(new JButton("OK"));
是最实用的一个。因为您很可能以后需要使用
的容器myFrame.getContentPane();
以后你不需要再写一遍。例如,如果您需要为框架设置另一个布局,则可以使用它。但如前所述,两者都可以使用。