자바
자바 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
반응형