자바

자바 UI - Swing (툴바 컴포넌트)

록's 2023. 2. 20. 11:33
728x90
반응형



툴바 컴포넌트

툴바는 메뉴바 아래에 위치하고 주로 버튼들이 배치되는 컨테이너이다.

메뉴보다는 빠르게 원하는 기능을 마우스로 선택할 수 있기 때문에 사용자들은 메뉴보다는 툴바를 더 선호한다.

 

 

컴포넌트 설명
JToolBar 툴바 생성을 위한 컴포넌트
JToolBar.Separator 버튼들을 그룹 짓기 위해 공백을 제공하는 컴포넌트

 

 

 

최상위 레벨 컨테이너에서 JToolBar를 상단에 배치하는 방법은 JToolBar를 생성한 뒤 BoardLayout을 이용해서 북쪽에 배치하면 된다

 

JToolBar 내부에 컴포넌트가 추가되지 않으면 JToolBar가 북쪽에 위치하더라도 보이지 않는다

JToolBar jToolBar = new JToolBar();
jFrame.getContentPane().add(jToolBar, BorderLayout.NORTH);

 

프로그램 실행 중에는 JToolBar의 요철 부분을 마우스로 끌어서 컨테이너의 동·서·남·북에 붙 일 수 있다

JToolBar를 중앙에 끌어 놓으면 툴바 윈도우가 만들어진다. 이러한 JToolBar의 끌기 기능을 없애려면 setFloatable(false)를 호출하면 된다.

jToolBar.setFloatable(false)

 

JToolBar 내부 컴포넌트는 일반적으로 JButton으로 구성되나 다른 컴포넌트도 추가 가능하다

JButton jButton = new JButton();
jButton.setIcon(new ImageIcon(getClass().getResource("image.gif"))); //아이콘
jButton.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED)); //돌출된 모양
jButton.setToolTipText("새로만들기"); //마우스를 올려놓았을 때 나오는 풍선 도움말
jToolBar.add(jButton);

 

 

툴바 버튼을 클릭하면 메시지 다이얼로그로 어떤 버튼이 클릭되었는지 알려주는 방법

import java.awt.BorderLayout;
import java.awt.MenuBar;
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.JOptionPane;
import javax.swing.JToolBar;
import javax.swing.SwingUtilities;
import javax.swing.border.SoftBevelBorder;

public class JToolBarExample extends JFrame {
	private JMenuBar jMenuBar;
	private JToolBar jToolBar;
	private JButton btnNew, btnSave, btnCopy, btnPaste;

	public JToolBarExample() {
		this.setTitle("JFarme");
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setJMenuBar(getJMenuBar());
		
		// JToolBar를 JFarme의 북쪽에 배치
		this.getContentPane().add(getJToolBar(), BorderLayout.NORTH);
		
		this.setSize(300, 200);
	}
	
	public JMenuBar getJMenuBar() {
		if(jMenuBar == null) {
			jMenuBar = new JMenuBar();
			jMenuBar.add(new JMenu("파일"));
			jMenuBar.add(new JMenu("도움말"));
		}
		return jMenuBar;
	}
	public JToolBar getJToolBar() {
		if(jToolBar == null) {
			jToolBar = new JToolBar();
			jToolBar.add(getBtnNew());
			jToolBar.add(getBtnSave());
			jToolBar.addSeparator();
			jToolBar.add(getBtnCopy());
			jToolBar.add(getBtnPaste());
		}
		return jToolBar;
	}
	
	//JToolBar의 New 버튼 생성
	public JButton getBtnNew() {
		if (btnNew == null) {
			btnNew = new JButton();
			btnNew.setIcon(new ImageIcon(getClass().getResource("new.gif")));
			btnNew.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
			btnNew.setToolTipText("새로만들기");
			btnNew.addActionListener(actionListener);
		}
		return btnNew;
	}
	
	// JToolBar의 Save 버튼 생성
	public JButton getBtnSave() {
		if(btnSave == null) {
			btnSave = new JButton();
			btnSave.setIcon(new ImageIcon(getClass().getResource("save.gif")));
			btnSave.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
			btnSave.setToolTipText("저장");
			btnSave.addActionListener(actionListener);
		}
		return btnSave;
	}
	
	// JToolBar의 Copy 버튼 생성
	public JButton getBtnCopy() {
		if(btnCopy == null) {
			btnCopy = new JButton();
			btnCopy.setIcon(new ImageIcon(getClass().getResource("copy.gif")));
			btnCopy.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
			btnCopy.setToolTipText("복사");
			btnCopy.addActionListener(actionListener);
		}
		return btnCopy;
	}
	
	//JToolBar의 Paste 버튼 생성
	public JButton getBtnPaste() {
		if (btnPaste == null) {
			btnPaste = new JButton();
			btnPaste.setIcon(new ImageIcon(getClass().getResource("paste.gif")));
			btnPaste.setBorder(new SoftBevelBorder(SoftBevelBorder.RAISED));
			btnPaste.setToolTipText("붙여넣기");
			btnPaste.addActionListener(actionListener);
		}
		return btnPaste;
	}
	
	//JToolBar의 버튼 이벤트 처리
	private ActionListener actionListener = new ActionListener() {
		@Override
		public void actionPerformed(ActionEvent e) {
			if(e.getSource() == btnNew) {
				JOptionPane.showMessageDialog(JToolBarExample.this, "[새로만들기]를 클릭");
			} else if(e.getSource() == btnSave) {
				JOptionPane.showMessageDialog(JToolBarExample.this, "[저장]를 클릭");
			} else if(e.getSource() == btnCopy) {
				JOptionPane.showMessageDialog(JToolBarExample.this, "[복사]를 클릭");
			} else if (e.getSource() == btnPaste) {
				JOptionPane.showMessageDialog(JToolBarExample.this, "[붙여넣기]를 클릭");
			}
		}
	};
	
	
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
			JToolBarExample jFrame = new JToolBarExample();
			jFrame.setVisible(true);
			}
		});
	}
}

 

- 실행 결과 -

 



 

728x90
반응형