2013-09-27 9 views
0

Я изучаю Java Swing, и у меня есть сомнения в связи с использованием объекта BorderLayout.Некоторые сомнения, связанные с использованием объекта 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 объект по строке:

add(toolbar, BorderLayout.NORTH); 

Чтение документации Я знаю, что:

Компоновка границы выкладывает контейнер, организация и изменение размера его компонентов, чтобы поместиться в пяти регионах: север, юг, восток, запад и центра

Мое сомнение есть: BorderLayout объект, к которому относится? На внешнем JFrame контейнер?

Это означает, что он помещает панели инструментов объекта в положении СЕВЕРО моего JFrame? Или что?

+1

Ваш 'Toolbar' ** является **' JFrame' – nachokk

ответ

1

Вы помещаете панель инструментов в СЕВЕРНОЕ положение своего экземпляра ToolBar с именем ex.

Ваш номер ToolBar распространяется на JFrame. Метод add наследуется ToolBar от JFrame. В вашем main вы вызываете конструктор ToolBar, который создает новый экземпляр ToolBar и сохраняет ссылку на ex. Он также называет метод initUI по телефону ex, который называет add по телефону ex.

+0

mmm yes Я имею в виду: my ToolBar IS A JFrame (потому что он расширяет JFrame), поэтому объект ToolBar является контейнером, и я помещаю объект панели инструментов JToolBar на север этого контейнера, правильно? – AndreaNobili

+1

@AndreaNobili правый! Они не добавляются непосредственно в jframe, а в contentPane, поскольку java 5 я думаю, что не уверен – nachokk

+1

'javax.swing.JFrame':« В качестве удобства «add» и его вариантов «remove» и «setLayout» были отменены при необходимости пересылать на контентную панель ». – trashgod

Смежные вопросы