Менюта и барове с инструменти

Обикновен бар

package com.zetcode;
 
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
 
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
 
public class Menu extends JFrame {
 
public Menu() {
 
setTitle("JMenuBar");
 
JMenuBar menubar = new JMenuBar();
ImageIcon icon = new ImageIcon("exit.png");
 
JMenu file = new JMenu("File");
file.setMnemonic(KeyEvent.VK_F);
 
JMenuItem fileClose = new JMenuItem("Close", icon);
fileClose.setMnemonic(KeyEvent.VK_C);
fileClose.setToolTipText("Exit application");
fileClose.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
System.exit(0);
}
 
});
 
file.add(fileClose);
 
menubar.add(file);
 
setJMenuBar(menubar);
 
setSize(250, 200);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
 
public static void main(String[] args) {
 
new Menu();
 
}
}

Този пример, ще покаже обикновен

прозорец с бар за инструменти.

При избиране на прозореца за затваряне,

прозореца, ще се затвори.

JMenuBar menubar = new JMenuBar();

Тук създаваме немю бара.

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

Ще изобразим икона в менюто.

JMenu file = new JMenu("File");
file.setMnemonic(KeyEvent.VK_F);

Създаваме обект на менюто.

Също така създаваме и достъп от клавиатурата до менюто.

За да поставим достъп до менюто, задаваме метод setMnemonic.

В нашия случай, можем да отворим менюто с ALT + F.

fileClose.setToolTipText("Exit application");

Този код създава линия за менюто.

Подменю
Всяко меню може да има и подменю.

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
 
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.KeyStroke;
 
public class Submenu extends JFrame {
 
public Submenu() {
 
setTitle("Submenu");
 
JMenuBar menubar = new JMenuBar();
ImageIcon iconNew = new ImageIcon("new.png");
ImageIcon iconOpen = new ImageIcon("open.png");
ImageIcon iconSave = new ImageIcon("save.png");
ImageIcon iconClose = new ImageIcon("exit.png");
 
JMenu file = new JMenu("File");
file.setMnemonic(KeyEvent.VK_F);
 
JMenu imp = new JMenu("Import");
imp.setMnemonic(KeyEvent.VK_M);
 
JMenuItem newsf = new JMenuItem("Import newsfeed list...");
JMenuItem bookm = new JMenuItem("Import bookmarks...");
JMenuItem mail = new JMenuItem("Import mail...");
 
imp.add(newsf);
imp.add(bookm);
imp.add(mail);
 
JMenuItem fileNew = new JMenuItem("New", iconNew);
fileNew.setMnemonic(KeyEvent.VK_N);
 
JMenuItem fileOpen = new JMenuItem("Open", iconOpen);
fileNew.setMnemonic(KeyEvent.VK_O);
 
JMenuItem fileSave = new JMenuItem("Save", iconSave);
fileSave.setMnemonic(KeyEvent.VK_S);
 
JMenuItem fileClose = new JMenuItem("Close", iconClose);
fileClose.setMnemonic(KeyEvent.VK_C);
fileClose.setToolTipText("Exit application");
fileClose.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W,
ActionEvent.CTRL_MASK));
 
fileClose.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
System.exit(0);
}
 
});
 
file.add(fileNew);
file.add(fileOpen);
file.add(fileSave);
file.addSeparator();
file.add(imp);
file.addSeparator();
file.add(fileClose);
 
menubar.add(file);
 
setJMenuBar(menubar);
 
setSize(360, 250);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
 
public static void main(String[] args) {
new Submenu();
}
}

В този пример, ние създаваме подменю разделител,

за манюто и достъп до клавиатурата.

JMenu imp = new JMenu("Import");
...
file.add(imp);

Под менюто е като всяко друго меню.

Създава се по същия начин.

Просто добавяме меню на меню.

fileClose.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W,
ActionEvent.CTRL_MASK));

accelerator е кратък път, който добавя предмет в менюто. В нашия случай Ctrl + W затваряме прозореца.

file.addSeparator();

Разделител е вертикална линия,

която визуално разделя елементите от менюто.

По този начин ние можем да позиционираме

група в някои логически места.

JCheckBoxMenuItem
Предмет който може да бъде селектиран .
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
 
import javax.swing.BorderFactory;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.UIManager;
import javax.swing.border.EtchedBorder;
 
public class CheckMenuItem extends JFrame {
 
private JLabel statusbar;
 
public CheckMenuItem() {
 
setTitle("CheckBoxMenuItem");
 
JMenuBar menubar = new JMenuBar();
JMenu file = new JMenu("File");
file.setMnemonic(KeyEvent.VK_F);
 
JMenu view = new JMenu("View");
view.setMnemonic(KeyEvent.VK_V);
 
JCheckBoxMenuItem sbar = new JCheckBoxMenuItem("Show StatuBar");
sbar.setState(true);
 
sbar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
if (statusbar.isVisible()) {
statusbar.setVisible(false);
} else {
statusbar.setVisible(true);
}
}
 
});
 
view.add(sbar);
 
menubar.add(file);
menubar.add(view);
 
setJMenuBar(menubar);
 
statusbar = new JLabel(" Statusbar");
statusbar.setBorder(BorderFactory.createEtchedBorder(
EtchedBorder.RAISED));
add(statusbar, BorderLayout.SOUTH);
 
setSize(360, 250);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
 
public static void main(String[] args) {
new CheckMenuItem();
}
}

Примера показва JCheckBoxMenuItem..
JCheckBoxMenuItem sbar = new JCheckBoxMenuItem(„Show StatuBar“);
sbar.setState(true);
Създаваме JCheckBoxMenuItem и го проверява по дефаут. Статус бара е видим.

if (statusbar.isVisible()) {
statusbar.setVisible(false);
} else {
statusbar.setVisible(true);
}

Тук намираме видимостта на статус бара.

statusbar = new JLabel(" Statusbar");
statusbar.setBorder(
BorderFactory.createEtchedBorder(EtchedBorder.RAISED)
);

Статус бара е с JLabel. Създаваме и EtchedBorder, така че да се забелязва с бордер.

Падащо меню

import java.awt.Toolkit;
 
import javax.swing.*;
import java.awt.event.*;
 
public class PopupMenu {
 
private JPopupMenu menu;
private Toolkit toolkit;
 
public PopupMenu(){
 
JFrame frame = new JFrame("JPopupMenu");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
toolkit = frame.getToolkit();
 
menu = new JPopupMenu();
JMenuItem menuItemBeep = new JMenuItem("Beep");
 
menuItemBeep.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
toolkit.beep();
}
});
 
menu.add(menuItemBeep);
 
JMenuItem menuItemClose = new JMenuItem("Close");
menuItemClose.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
 
});
 
menu.add(menuItemClose);
 
frame.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent e) {
if (e.getButton() == e.BUTTON3) {
menu.show(e.getComponent(), e.getX(), e.getY());
}
}
});
 
frame.setSize(250, 200);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
 
public static void main(String[] args) {
new PopupMenu();
}
}

С този пример създаваме меню в което , единия бутон от менюто е за звук а другия за излизане от прозореца.
В нашия пример , създаваме разделители и достъп до клавиатурата.
menu = new JPopupMenu();
За да направим падащо меню, използваме JPopupMenu.
JMenuItem menuItemBeep = new JMenuItem(„Beep“);
Предметите в обикновенното меню са същите JMenu .

frame.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent e) {
if (e.getButton() == e.BUTTON3) {
menu.show(e.getComponent(), e.getX(), e.getY());
}
}
});

Мястото за позициониране на менюто .

JToolbar
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;
 
public class SimpleToolbar extends JFrame {
 
public SimpleToolbar() {
 
setTitle("SimpleToolbar");
 
JMenuBar menubar = new JMenuBar();
JMenu file = new JMenu("File");
menubar.add(file);
setJMenuBar(menubar);
 
JToolBar toolbar = new JToolBar();
 
ImageIcon icon = new ImageIcon(getClass().getResource("exit.png"));
 
JButton exit = new JButton(icon);
toolbar.add(exit);
exit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
System.exit(0);
}
 
});
 
add(toolbar, BorderLayout.NORTH);
 
setSize(300, 200);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
 
public static void main(String[] args) {
new SimpleToolbar();
}
}

Примера създава бар с инструменти с едно падащо меню.

JToolBar toolbar = new JToolBar();

Това е бара с инструменти JToolBar.

JButton exit = new JButton(icon);
toolbar.add(exit);

Създаваме бутон и добавяме бара с инструменти.

Бар с инструменти
Добавяме два бара с инструменти.

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
import javax.swing.BoxLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JToolBar;
 
public class Toolbars extends JFrame {
 
public Toolbars() {
 
setTitle("Toolbars");
 
JToolBar toolbar1 = new JToolBar();
JToolBar toolbar2 = new JToolBar();
 
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
 
ImageIcon newi = new ImageIcon(
getClass().getResource("new.png"));
ImageIcon open = new ImageIcon(
getClass().getResource("open.png"));
ImageIcon save = new ImageIcon(
getClass().getResource("save.png"));
ImageIcon exit = new ImageIcon(
getClass().getResource("exit.png"));
 
JButton newb = new JButton(newi);
JButton openb = new JButton(open);
JButton saveb = new JButton(save);
 
toolbar1.add(newb);
toolbar1.add(openb);
toolbar1.add(saveb);
toolbar1.setAlignmentX(0);
 
JButton exitb = new JButton(exit);
toolbar2.add(exitb);
toolbar2.setAlignmentX(0);
 
exitb.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
System.exit(0);
}
 
});
 
panel.add(toolbar1);
panel.add(toolbar2);
 
add(panel, BorderLayout.NORTH);
 
setSize(300, 200);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
 
public static void main(String[] args) {
new Toolbars();
}
}

Има няколко възможности за създаване на бар с инструменти. Слагаме JPanel на север от BorderLayout. Панела има вертикален BoxLayout. Добавяме два две менюта в този панел.

JToolBar toolbar1 = new JToolBar();
JToolBar toolbar2 = new JToolBar();

Създава два бара.

JPanel panel = new JPanel();

panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
Панела има вртикална кутия BoxLayout.

toolbar1.setAlignmentX(0);

Бара с инструменти е от лявата страна.

panel.add(toolbar1);
panel.add(toolbar2);
add(panel, BorderLayout.NORTH);

Добавяме бара с инструменти към панела.

Вертикален бар с инструменти

import java.awt.BorderLayout;
 
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JToolBar;
import javax.swing.UIManager;
 
public class VerticalToolbar extends JFrame {
 
public VerticalToolbar() {
 
setTitle("Vertical toolbar");
 
JToolBar toolbar = new JToolBar(JToolBar.VERTICAL);
 
ImageIcon select = new ImageIcon(
getClass().getResource("select.gif"));
ImageIcon freehand = new ImageIcon(
getClass().getResource("freehand.gif"));
ImageIcon shapeed = new ImageIcon(
getClass().getResource("shapeed.gif"));
ImageIcon pen = new ImageIcon(
getClass().getResource("pen.gif"));
ImageIcon rectangle = new ImageIcon(
getClass().getResource("rectangle.gif"));
ImageIcon ellipse = new ImageIcon(
getClass().getResource("ellipse.gif"));
ImageIcon qs = new ImageIcon(
getClass().getResource("qs.gif"));
ImageIcon text = new ImageIcon(
getClass().getResource("text.gif"));
 
JButton selectb = new JButton(select);
JButton freehandb = new JButton(freehand);
JButton shapeedb = new JButton(shapeed);
JButton penb = new JButton(pen);
JButton rectangleb = new JButton(rectangle);
JButton ellipseb = new JButton(ellipse);
JButton qsb = new JButton(qs);
JButton textb = new JButton(text);
 
toolbar.add(selectb);
toolbar.add(freehandb);
toolbar.add(shapeedb);
toolbar.add(penb);
toolbar.add(rectangleb);
toolbar.add(ellipseb);
toolbar.add(qsb);
toolbar.add(textb);
 
add(toolbar, BorderLayout.WEST);
 
setSize(250, 350);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
 
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
}
catch (Exception e) {
System.out.println("Error:" + e.getStackTrace());
}
new VerticalToolbar();
}
}
JToolBar toolbar = new JToolBar(JToolBar.VERTICAL);

Създаваме вертикален бар с инструменти.

add(toolbar, BorderLayout.WEST);

Бара с инструменти е позициониран от лявата страна на прозореца.

UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());

Popularity: 1% [?]

Related posts:

  1. Първа програма в Java Swing Писане на код за изобразяване на прозорец 1 2 3...
  2. Въведение в Swing Swing библиотеката е официален Java GUI инструмент пуснат от Sun...
  3. How to read an image from file or URL The “javax.imageio” package is used to deal with the Java...
  4. Клас за Screenshot с Java Чрез този клас на Java може да правите Screenshots на...
  5. Стартиране на Java application фею main метод Java application обикновенно изисква main() като входна точка за да...

Related posts brought to you by Yet Another Related Posts Plugin.

You can leave a response, or trackback from your own site.

Leave a Reply

Задвижван с помощта на WordPress | Compare Cell Phone Plans at iCellPhonePlans.com | Thanks to Cheap Palm Pixi, Bromoney and Wordpress Themes