Пример 3. Создать меню следующего вида
import java.awt.*;
import javax.swing.*;
public class FrameMenu extends JFrame{
// Метод создания меню
private static JMenuBar createMenu(){
JMenuBar mainMenu = new JMenuBar();
JMenu mSpr = new JMenu("Справочники");
JMenuItem miExit = new JMenuItem("Выход");
JMenuItem miSprod = new JMenuItem("Продукция");
JMenuItem miSgrup = new JMenuItem("Группы");
JMenu mKontr = new JMenu("Контрагенты");
JMenuItem miSpok = new JMenuItem("Покупатели");
JMenuItem miSpost = new JMenuItem("Поставщики");
mKontr.add(miSpok);
mKontr.add(miSpost);
mSpr.add(miSprod);
mSpr.add(miSgrup);
mSpr.addSeparator();
mSpr.add(mKontr);
JMenu mOper = new JMenu("Операции");
JMenuItem miPost = new JMenuItem("Поставки");
JMenuItem miProd = new JMenuItem("Продажа");
JMenuItem miOst=new JMenuItem("Остатки на складе");
mOper.add(miPost);
mOper.add(miProd);
mOper.addSeparator();
mOper.add(miOst);
mainMenu.add(mSpr);
mainMenu.add(mOper);
mainMenu.add(miExit);
// Связывание пункта меню с действием «закрыть приложение»
miExit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
return mainMenu;
}
public static void main(String[] args) {
FrameMenu frm = new FrameMenu();
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Создаем основное меню (обращение к методу createMenu)
frm.setJMenuBar(createMenu());
frm.setDefaultLookAndFeelDecorated(true);
frm.setPreferredSize(new Dimension(270, 225));
frm.pack(); // устанавливает минимальный размер контейнера, достаточный для отображения всех компонентов
frm.setVisible(true);
}
}
Пример 4. Использование флагов, переключателей и выпадающих списков для управления шрифтом текста метки. Шрифт определяется стилем (жирный, курсив), типом шрифта (Arial, Serif) и размером. Стиль будет задавать с использованием флажков, тип – радиокнопками, размер – выпадающим списком.
Import java.Awt.*;
import java.awt.event.*;
Import javax.Swing.*;
public class ControlFont extends JFrame {
// Объявление переменных
JLabel label;
JCheckBox cbBold;
JCheckBox cbItal;
ButtonGroup grpFont;
JRadioButton rbArial;
JRadioButton rbSerif;
ActionListener listenerStyle;
ActionListener listenerFont;
ActionListener listenerSize;
JPanel pnl1;
JPanel pnl2;
JPanel pnl3;
JPanel pnl4;
JComboBox cbSize;
// Конструктор класса
public ControlFont (){
setLocation(100,100);
setSize(200,200);
Image img = Toolkit.getDefaultToolkit().createImage(
getClass().getResource("con_frm.png"));
setIconImage(img);
// Создание графического интерфейса формы
createGUI();
// Задание иконки окна
setIconImage(img);
setResizable(true);
}
// Создание графического интерфейса формы
private void createGUI(){
// Создание 4 панелей для размещения элементов.
// На каждой панели компоненты располагаются в ряд (FlowLayout)
pnl1 = new JPanel();
pnl1.setLayout(new FlowLayout());
pnl2 = new JPanel();
pnl2.setLayout(new FlowLayout());
pnl3 = new JPanel();
pnl3.setLayout(new FlowLayout());
pnl4 = new JPanel();
pnl4.setLayout(new FlowLayout());
// Создание флажков для определения стиля
cbBold = new JCheckBox("Жирный");
cbItal = new JCheckBox("Курсив");
// Создание радиокнопок для определения семейства шрифтов
grpFont = new ButtonGroup();
rbArial=new JRadioButton("Arial",false);
grpFont.add(rbArial);
rbSerif=new JRadioButton("Serif",true);
grpFont.add(rbSerif);
// Создание обработчика для упраления стилем
listenerStyle = new ActionListener(){
public void actionPerformed(ActionEvent event) {
// Сохраняем размер и семейство шрифта
int size = label.getFont().getSize();
String nm = label.getFont().getFamily();
// Определение стилей по флажкам
int style = 0;
if(cbBold.isSelected())style += Font.BOLD;
if(cbItal.isSelected())style += Font.ITALIC;
// Установка шрифта (3 параметра: семейство,стиль,размер)
label.setFont(new Font(nm, style, size));
}
};
// Назначение слушателя-обработчика компонентам-флажкам
cbBold.addActionListener(listenerStyle);
cbItal.addActionListener(listenerStyle);
// Создание обработчика для выбора семейством шрифта
listenerFont = new ActionListener(){
public void actionPerformed(ActionEvent event) {
// Сохраняем размер и семейство шрифта
int size = label.getFont().getSize();
int style = label.getFont().getStyle();
// Определение семейства Шрифтов по радиокнопкам
String nm = null;
if(rbArial.isSelected()) nm = "Arial";
else if(rbSerif.isSelected()) nm = "Serif";
// Установка шрифта (3 параметра: семейство,стиль,размер)
label.setFont(new Font(nm, style, size));
}
};
//Назначение слушателя-обработчика компонентам-радиокнопкам
rbSerif.addActionListener(listenerFont);
rbArial.addActionListener(listenerFont);
// Создание списка для выбора размера шрифта
cbSize = new JComboBox(new Integer[] {8,10,12,14,16});
// Назначение слушателя для события выбора элемента списка
cbSize.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
String nm = label.getFont().getFamily();
int style = label.getFont().getStyle();
int size =(int) cbSize.getSelectedItem();
if(rbArial.isSelected()) nm = "Arial";
else if(rbSerif.isSelected()) nm = "Serif";
// Установка семейства шрифта
label.setFont(new Font(nm, style, size));
}
});
// Создание метки, для которой задается шрифт
label = new JLabel("Управление шрифтом");
label.setFont(new Font("Serif", Font.PLAIN, 12));
// Добавление иконки для метки
URL imgURL = Pr4_Flags.class.getResource("icon1.png");
ImageIcon icon = new ImageIcon(imgURL);
Label.setIcon(icon);
// Добавление компонентов на панели
pnl1.add (label);
pnl2.add (cbBold);
pnl2.add(cbItal);
pnl3.add(rbArial);
pnl3.add(rbSerif);
pnl4.add(new Label("Управление шрифтом"));
pnl4.add(cbSize);
// Добавляем панели на фрейм (панели располагаются в одну колонку)
setLayout(new GridLayout(4,1));
getContentPane().add(pnl1);
getContentPane().add(pnl2);
getContentPane().add(pnl3);
getContentPane().add(pnl4);
}
public static void main(String[] args) {
ControlFont frm = new ControlFont ();
frm.setDefaultCloseOperation(EXIT_ON_CLOSE);
frm.setVisible(true);
}
}
Результат выполнения
Пример 7. Создать фрейм для формирования и вывода таблицы значений функции .
public class Exm6 extends JFrame{
private static final long serialVersionUID = 1L;
JPanel pnl1;
JPanel pnl2;
JPanel pnl3;
JLabel label;
JTextField tfieldA;
JTextField tfieldH;
JTextField tfieldN;
JLabel labelA;
JLabel labelH;
JLabel labelN;
JButton button;
JTextArea tarea;
public Exm6(int x, int y,int w, int h){
setSize(w,h);
setLocation(x,y);
setTitle("Пример 6"); // заголовок фрейма
createGUI();
}
private void createGUI(){
Box box = Box.createVerticalBox();
pnl1 = new JPanel();
pnl1.setLayout(null);
pnl2 = new JPanel();
pnl3 = new JPanel();
pnl3.setLayout(new FlowLayout());
label = new JLabel("Функция: у = a-√x * cos(ax)");
label.setFont(new Font("Serif", Font.PLAIN, 14));
label.setSize(200,30);
label.setLocation(400, 1);
labelA = new JLabel("a=");
labelA.setFont(new Font("Serif", Font.PLAIN, 14));
tfieldA = new JTextField(20);
tfieldA.setFont(new Font("Serif", Font.PLAIN, 14));
labelH = new JLabel("шаг=");
labelH.setFont(new Font("Serif", Font.PLAIN, 14));
tfieldH = new JTextField(20);
tfieldH.setFont(new Font("Serif", Font.PLAIN, 14));
labelN = new JLabel("кол-во точек=");
labelN.setFont(new Font("Serif", Font.PLAIN, 14));
tfieldN = new JTextField(20);
tfieldN.setFont(new Font("Serif", Font.PLAIN, 14));
tarea = new JTextArea("",20,20);
tarea.setLineWrap(true);
button = new JButton("OK");
button.setFont(new Font("Serif", Font.PLAIN, 12));
button.setSize(80, 30);
button.setLocation(800, 1);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
double a,h,f;
int n;
a =Integer.parseInt(tfieldA.getText());
h = Double.parseDouble(tfieldH.getText());
n =Integer.parseInt(tfieldN.getText());
double x = 0;
tarea.setText("");
for (int i=0; i<n; i++) {
x+=h*i;
f=a-Math.sqrt(x)*Math.cos(a*x);
tarea.append(x+" "+f+"\n");
}
}
});
pnl1.add(label);
pnl1.add(button);
pnl2.add(labelA);
pnl2.add(tfieldA);
pnl2.add(labelH);
pnl2.add(tfieldH);
pnl2.add(labelN);
pnl2.add(tfieldN);
pnl3.add(new JScrollPane(tarea));
box.add(pnl1);
box.add(pnl2);
box.add(pnl3);
setContentPane(box);
//setLayout(null);
}
public static void main(String[] args){
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screens = kit.getScreenSize();
int w = screens.width;
int h = screens.height;
Exm6 frame=new Exm6(w/4, h/4,w/2,h/2);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
Результат выполнения:
Пример 7. Создание нескольких окон в приложении