Добавил:
Староста Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
L3_Graficheskiy_interfeys_Primery.doc
Скачиваний:
5
Добавлен:
24.11.2018
Размер:
561.15 Кб
Скачать

Пример 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. Создание нескольких окон в приложении