一些疑问与BorderLayout对象的使用有关

时间:2013-09-27 14:21:42

标签: java swing border-layout

我正在学习Java Swing,我对使用 BorderLayout 对象有疑问。

我有一个创建ToolBar的简单示例程序:

package com.andrea.menu;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JToolBar;
import javax.swing.SwingUtilities;

public class ToolBar extends JFrame {

    public ToolBar() {
        initUI();
    }

    public final void initUI() {

        JMenuBar menubar = new JMenuBar();      // The menu bar containing the main menu voices
        JMenu file = new JMenu("File");         // Creo un menu a tendina con etichetta "File" e lo aggiungo
        menubar.add(file);

        setJMenuBar(menubar);                   // Sets the menubar for this frame.

        JToolBar toolbar = new JToolBar();

        ImageIcon icon = new ImageIcon(getClass().getResource("exit.png"));

        JButton exitButton = new JButton(icon);
        toolbar.add(exitButton);
        exitButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event) {
                System.exit(0);
            }

        });

        add(toolbar, BorderLayout.NORTH);

        setTitle("Simple toolbar");
        setSize(300, 200);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                ToolBar ex = new ToolBar();
                ex.setVisible(true);
            }
        });
    }
}

所以它通过以下行创建 JToolBar 对象:

JToolBar toolbar = new JToolBar();

然后它将它放在 BorderLayout 对象的 NORTH 位置:

add(toolbar, BorderLayout.NORTH);

阅读我知道的文档:

  

边框布局布置一个容器,安排并调整其大小   适合五个地区的组成部分:北,南,东,西,和   中心

我的疑问是:它引用的BorderLayout对象?在外部 JFrame 容器?

这意味着它将工具栏对象放在 JFrame 的NORTH位置?或者是什么?

1 个答案:

答案 0 :(得分:1)

您将工具栏放在名为ToolBar的{​​{1}}实例的NORTH位置。

您的ex课程延长了ToolBarJFrame方法由add的{​​{1}}继承。在ToolBar中,您调用JFrame构造函数,该构造函数会创建main的新实例并将引用保存到ToolBar。它还会在ToolBar上调用ex方法,该方法会在initUI上调用ex