我正在学习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位置?或者是什么?
答案 0 :(得分:1)
您将工具栏放在名为ToolBar
的{{1}}实例的NORTH位置。
您的ex
课程延长了ToolBar
。 JFrame
方法由add
的{{1}}继承。在ToolBar
中,您调用JFrame
构造函数,该构造函数会创建main
的新实例并将引用保存到ToolBar
。它还会在ToolBar
上调用ex
方法,该方法会在initUI
上调用ex
。