Разработка приложения круговой секторной параметрической диаграммы с использованием языка программирования Java

Определение понятия диаграммы, описание ее основных видов. Изучение основ создания круговой секторной параметрической диаграммы. Разработка Java-приложения. Оценка результатов работы созданного программного продукта, его логичности и информативности.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 11.05.2014
Размер файла 392,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Содержание

Введение

1. Диаграммы и их виды

2. Разработка Java-приложения. Техническое задание

2.1 Создание круговой секторной параметрической диаграммы

2.2 Результаты работы приложения

Заключение

Список литературы

Приложение

Введение

Последние несколько лет разработчики прилагали массу усилий, чтобы интегрировать графику в свои приложения Java. На сегодняшний день платформа Java привлекла более 9 миллионов разработчиков программного обеспечения. Она используется во всех главных сегментах индустрии, а также в широком диапазоне устройств, компьютеров и сетей. Сейчас, чтобы удовлетворить нужды прихотливых пользователей, практически каждый Интернет-ресурс строится на динамическом отображении представленной информации. Большое внимание уделяется визуализации данных в целях представления результатов. Иногда эффективного демонстрационного материала оказывается вполне достаточно, чтобы представить в наглядном состояние объекта исследования. Графики и диаграммы позволяют облегчить восприятие аналитической информации.

Целью курсовой работы является разработка приложения круговой секторной параметрической диаграммы, используя язык программирования Java. На сегодняшний день графика имеет немаловажное значение для языков программирования. Она позволяет визуализировать любые программы, что придает яркость и удобство.

1. Диаграммы и их виды

В наибольшей степени распространенным способом графического изображения статистической информации являются диаграммы. Диаграмма -- графическое представление данных, позволяющее быстро оценить соотношение нескольких величин. Представляет собой геометрическое символьное изображение информации с применением различных приёмов техники визуализации.

Диаграммы принято подразделять по их форме на следующие виды:

1. столбиковые диаграммы;

2. полосовые диаграммы;

3. круговые диаграммы;

4. линейные диаграммы;

5. фигурные диаграммы;

1. Столбиковая диаграмма.

Столбиковые диаграммы изображаются в виде прямоугольников (столбиков), вытянутых по вертикали, высота которых соответствует значению показателя.

2. Полосовая диаграмма.

Принцип построения полосовых диаграмм тот же, что и столбиковых. Отличие состоит в том, что полосовые (или ленточные) графики представляют значение показателя не по вертикальной, а по горизонтальной оси.

3. Круговая (секторная) диаграмма.

Достаточно распространённым способом графического изображения структуры статистических совокупностей является секторная диаграмма, так как идея целого очень наглядно выражается кругом, который представляет всю совокупность. Относительная величина каждого значения изображается в виде сектора круга, площадь которого соответствует вкладу этого значения в сумму значений. Этот вид графиков удобно использовать, когда нужно показать долю каждой величины в общем объёме. Сектора могут изображаться как в общем круге, так и отдельно, расположенными на небольшом удалении друг от друга.

Круговая диаграмма сохраняет наглядность только в том случае, если количество частей совокупности диаграммы небольшое. Если частей диаграммы слишком много, её применение неэффективно по причине несущественного различия сравниваемых структур. Недостаток круговых диаграмм -- малая ёмкость, невозможность отразить более широкий объём полезной информации.

4. Линейная диаграмма.

Линейные диаграммы могут быть использованы для характеристики вариации, динамики и взаимосвязи. Линейные графики строятся на координатной сетке. Геометрическими знаками служат точки и отрезки прямой, которые их последовательно соединяют в ломаные.

Линейные диаграммы для характеристики динамики применяют в следующих случаях:

1. если количество уровней ряда динамики достаточно велико. Их применение подчеркивает непрерывность процесса развития в виде непрерывной линии;

2. с целью отображения общей тенденции и характера развития явления;

3. при необходимости сравнения нескольких динамических рядов;

4. если нужно сопоставить не абсолютные уровни явления, а темпы роста.

5. Фигурная диаграмма.

Диаграммы фигурные представляют собой изображение в виде рисунков, силуэтов, фигур.

2. Разработка Java-приложения. Техническое задание

При запуске приложения должно открываться окно, которое визуально разделено на две части. В левой стороне окна находится - панель управления, в правой стороне - панель графики. На панели управления предоставляется выбор ручного или файлового ввода данных.

Для ручного ввода предоставляется окно, для ввода данных. Имеется копка "Ввод" и кнопка "Конец ввода", при нажатии которой блокируется кнопка "Ввод". Для файлового ввода предоставляется окно, где вводится имя файла, его путь и кнопка "Загрузить". Файл должен быть текстовый, где с новой строчки пишутся значения.

После выбора файлового или ручного ввода, при нажатии кнопки "Построить", на панели графики строится круговая секторная параметрическая диаграмма. На панели графики должна отображаться круговая диаграмма с введенными значениями, каждый сектор должен иметь свой цвет и значение.

2.1 Создание круговой секторной параметрической диаграммы

Для создания приложения, открываем Net Beans, выбираем создать новый проект Java. Подключаем необходимые пакеды для работы приложения:

import java.awt. и import java.io.

Создаем класс, описывающий поле, значение поля и его цвет

class PFields{

int zn;

Color col;

}

Создаем класс, который будет содержать поля, отображать диаграмму или нее и задаем размеры массивов. Модификатор поля static - поле принадлежит структуре класса. Одно значение присуще всем экземплярам.

class Fields{ //класс, содержащий поля

static boolean visib=false;

static PFields[] a = new PFields[20];

static PFields[] b = new PFields[20];

static int count=0,countb=0;

}

class MCanvas extends Canvas {

public MCanvas () {

super();

//super.setSize(300, 300);

}

Предопределяем метод Paint у класса Canvas. Public- Поле доступно отовсюду. Устанавливаем цвет, закрашиваем белым цветом фон, и рисуем диаграмму если разрешено.

public void paint(Graphics g) {

g.setColor(Color.white);

g.fillRect(10, 10, 300, 300);

if (Fields.visib) {

Считаем сумму значений всех полей, считаем, сколько приходится на 1 градус(x) и устанавливаем уже закрашенный угол в ноль градусов(y) Для каждого поля: генерируем цвет, закрашиваем угол, c y по x*(значение поля) градусов находим координаты точки середины радиуса в нуле градусов(x0,y0) находим градусную меру середины закрашенного угла(arc), поворачиваем точку (x0,y0) на угол (arc) относительно середины окружности, в новой точке выводим значение поля, увеличиваем y на x*(значение поля).

int summ=0;

for (int i=0;i<Fields.count;i++)

summ+=Fields.a[i].zn;

double x=(double)360/summ,y=0; y - текущее значение градусов

for (int i=0;i<Fields.count;i++){

Color c;

c = new Color((int)(Math.random()*255),(int)(Math.random()*255),(int)(Math.random()*255));

Генерируем новый цвет, если он еще не выбран, то записываем его.

if (Fields.a[i].col==null) Fields.a[i].col=c;

g.setColor(Fields.a[i].col);

Закрашиваем выбранную область.

g.fillArc(50, 50, 200, 200,(int)Math.round(y) ,(int)Math.round(x * Fields.a[i].zn));

Для середины текущего поля находим значения градусов.

double arc=(double)y+(double)(x*Fields.a[i].zn/2);

Устанавливваем цвет и переводим градусы в радианы, находим точку, повернутую на угол.

g.setColor(Color.black);

double rarc=Math.toRadians(arc);

double px=(250-150)*Math.cos(rarc)+150;

double py=-(250-150)*Math.sin(rarc)+150;

Выводим значение и устанавливаем текущие градусы.

JOptionPane.showMessageDialog(this, Double.toString((int)px)+' '+Double.toString((int)py)+' '+Double.toString(arc));

g.drawString( String.valueOf(Fields.a[i].zn), (int)(px+150)/2,(int)(py+150)/2);

y+=x*Fields.a[i].zn;

}

}

}

}

public class NewJFrame extends javax.swing.JFrame {

public NewJFrame() {

initComponents();

//this.setSize(400, 300);

Добавляем радиобаттоны, создаем канву

this.buttonGroup1.add(jRadioButton1);

this.buttonGroup1.add(jRadioButton2);

this.canvas1=new MCanvas();

Устанавливаем размеры.

this.canvas1.setBounds(200, 50, 300, 300);

this.add(this.canvas1);

this.add(this.canvas2);

}

Прописываем кнопки.

buttonGroup1 = new javax.swing.ButtonGroup();

canvas1 = new java.awt.Canvas();

jButton1 = new javax.swing.JButton();

jTextField1 = new javax.swing.JTextField();

textField1 = new java.awt.TextField();

jButton3 = new javax.swing.JButton();

jRadioButton1 = new javax.swing.JRadioButton();

jRadioButton2 = new javax.swing.JRadioButton();

jLabel1 = new javax.swing.JLabel();

jLabel2 = new javax.swing.JLabel();

jButton5 = new javax.swing.JButton();

jButton6 = new javax.swing.JButton();

jLabel3 = new javax.swing.JLabel();

jLabel4 = new javax.swing.JLabel();

jLabel5 = new javax.swing.JLabel();

Пишем название нашего приложения.

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

setTitle("Cекторная параметрическая диаграмма");

setResizable(false);

addWindowListener(new java.awt.event.WindowAdapter() {

public void windowActivated(java.awt.event.WindowEvent evt) {

formWindowActivated(evt);

}

public void windowOpened(java.awt.event.WindowEvent evt) {

formWindowOpened(evt);

}

});

jButton1.setText("Ввод");

jButton1.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jButton1ActionPerformed(evt);

}

});

textField1.setEnabled(false);

jButton3.setText("Загрузить");

jButton3.setEnabled(false);

jButton3.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jButton3ActionPerformed(evt);

}

});

Указываем параметры для ручного ввода.

jRadioButton1.setSelected(true);

jRadioButton1.setText("Ручной ввод");

jRadioButton1.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jRadioButton1ActionPerformed(evt);

}

});

jRadioButton2.setText("Ввод из файла");

jRadioButton2.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jRadioButton2ActionPerformed(evt);

}

});

jLabel1.setFont(new java.awt.Font("Arial", 0, 11)); // NOI18N

jLabel1.setText("Ручной ввод");

Параметры для файлового ввода.

jLabel2.setText("Файловый ввод");

jLabel2.setEnabled(false);

jButton5.setText("Конец ввода");

jButton5.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jButton5ActionPerformed(evt);

}

});

jButton6.setText("Построить");

jButton6.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jButton6ActionPerformed(evt);

}

});

jLabel3.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

jLabel3.setText("Панель управления");

jLabel4.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

jLabel4.setText("Панель графики");

jLabel5.setText("Имя файла");

jLabel5.setEnabled(false);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());

getContentPane().setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADIN)

.addGroup(layout.createSequentialGroup()

.addGap(28, 28, 28)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(jLabel5)

.addComponent(jLabel2)

.addComponent(jLabel1)

.addGroup(layout.createSequentialGroup()

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)

.addComponent(jButton5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 97, javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(jButton1))

.addComponent(jButton6)

.addComponent(jRadioButton2)

.addComponent(jRadioButton1)

.addComponent(textField1, javax.swing.GroupLayout.PREFERRED_SIZE, 115, javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(jButton3))

.addContainerGap(343, Short.MAX_VALUE))

.addGroup(layout.createSequentialGroup()

.addComponent(jLabel3)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addComponent(jLabel4)

.addGap(128, 128, 128))))

);

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADIN)

.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()

.addGap(29, 29, 29)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(jLabel3)

.addComponent(jLabel4))

.addGap(18, 18, 18)

.addComponent(jRadioButton1)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addComponent(jRadioButton2)

.addGap(45, 45, 45)

.addComponent(jLabel1)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(jButton1))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(jButton5)

.addGap(18, 18, 18)

.addComponent(jLabel2)

.addGap(18, 18, 18)

.addComponent(jLabel5)

.addGap(3, 3, 3)

.addComponent(textField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(10, 10, 10)

.addComponent(jButton3)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 49, Short.MAX_VALUE)

.addComponent(jButton6)

.addGap(26, 26, 26))

);

pack();

}// </editor-fold>

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

Создаем новое поле, довавляем туда введенное значение, очищаем поле для ввода, увеличиваем размер массива.

Fields.b[Fields.countb]=new PFields();

Fields.b[Fields.countb].zn=Integer.valueOf(jTextField1.getText());jTextField1.setText("");

Fields.countb++;

}

private void formWindowActivated(java.awt.event.WindowEvent evt) {

}

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {

try {

Открываем файл и считываем каждую строку из файла, создаем новое поле и записываем туда значение, увеличиваем размер массива.

BufferedReader in = new BufferedReader(new FileReader(textField1.getText()));

String str = "";

while (((str = in.readLine())) != null)

{

Fields.b[Fields.countb]=new PFields(); Fields.b[Fields.countb].zn=Integer.valueOf(str);

Fields.countb++;

}

} catch (IOException e) {

}

Очищаем поле с именем файла.

textField1.setText("");

}

private void jRadioButton1ActionPerformed(java.awt.event.ActionEvent evt) {

Если активна кнопка "Ручной ввод", то активируем все, что с ней связано. И блокируем все, что связано с файловым.

if (jRadioButton1.isSelected()){

jLabel1.setEnabled(true);

jTextField1.setEnabled(true);

jButton1.setEnabled(true);

jButton5.setEnabled(true);

jLabel2.setEnabled(false);

jLabel5.setEnabled(false);

textField1.setEnabled(false);

jButton3.setEnabled(false);

}

}

private void jRadioButton2ActionPerformed(java.awt.event.ActionEvent evt) {

Проделываем то же для файлового ввода.

if (jRadioButton2.isSelected()){

jButton5.setEnabled(false);

jTextField1.setEnabled(false);

jLabel1.setEnabled(false);

jButton1.setEnabled(false);

textField1.setEnabled(true);

jLabel2.setEnabled(true);

jButton3.setEnabled(true);

jLabel5.setEnabled(true);

}

}

private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {

}

private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {

Перезаписываем массив, устанавливаем размер и разрешаем отрисовку диаграммы.

for (int i=0;i<Fields.countb;i++)

Fields.a[i]=Fields.b[i];

Fields.count=Fields.countb;

for (int i=0;i<Fields.countb;i++)

Fields.b[i]=null;

Fields.countb=0;

Fields.visib=true;

canvas1.repaint();

}

private void formWindowOpened(java.awt.event.WindowEvent evt) {

Выделяем память под массив а

for (int i=0;i<20;i++)

Fields.a[i] = new PFields();

}

public static void main(String args[]) {

try {

for (javax.swing.UIManager.LookAndFeelInfo info: javax.swing.UIManager.getInstalledLookAndFeels()) {

if ("Nimbus".equals(info.getName())) {

javax.swing.UIManager.setLookAndFeel(info.getClassName());

break;

}

}

} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

}

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

new NewJFrame().setVisible(true);

}

});

}

private javax.swing.ButtonGroup buttonGroup1;

private java.awt.Canvas canvas1;

private javax.swing.JButton jButton1;

private javax.swing.JButton jButton3;

private javax.swing.JButton jButton5;

private javax.swing.JButton jButton6;

private javax.swing.JLabel jLabel1;

private javax.swing.JLabel jLabel2;

private javax.swing.JLabel jLabel3;

private javax.swing.JLabel jLabel4;

private javax.swing.JLabel jLabel5;

private javax.swing.JRadioButton jRadioButton1;

private javax.swing.JRadioButton jRadioButton2;

private javax.swing.JTextField jTextField1;

private java.awt.TextField textField1;

// End of variables declaration

}

2.2 Результаты работы приложения

Выбираем ручной ввод и вводим поочередно значения:

20

55

100

40

86

Нажимаем "конец ввода" и кнопку "построить".

Рисунок 1. Ручной ввод.

Для файлового ввода создаем новый текстовый документ Myfile.txt, в котором с новой строчки пишем значения:

34

56

24

10

72

100

Вводим имя файла и путь в окно "Имя файла" и нажимаем кнопку "Загрузить". При нажатии кнопки "Построить" получаем диаграмму.

Рисунок 2. Файловый ввод.

Заключение

Написано Java-приложение, для построения круговой секторной параметрической диаграммы.

Пользователь может выбрать ручной или файловый ввод данных, при файловом вводе, необходимо создать новый текстовый документ и записать значения с новой строчки. На панели графики отображаются введенные значения в виде диаграммы, секторы каждого значения разделены различными цветами.

Приложение является ярким примером отображения возможностей языка Java. Приложение является логичным и максимально информативным.

Список литературы

1. Моначов В. Язык программирования Java и среда NetBeans . - 2-е изд. - СПб.: БХВ-Петербург, 2009. - 720 с.

2. Хорстманн К.С., Корнелл Г. Java 2. Библиотека профессионала, том 1. Основы. - М.: Вильямс, 2008. - 816 с.

3. Н.А. Вязовик. Программирование на Java. Курс лекций, Интернет-университет информационных технологий, 2003 г., 592 стр.

4. Герберт Шилдт, Джеймс Холмс, Искусство программирования на Java, 2005 г., 336 стр.

5. Хабибуллин И.Ш. Самоучитель Java 2. СПб.: БХВ-Петербург, 2007. - 720 с.: Ил.

6. Эккель Б. Философия Java. Библиотека программиста. СПб.: Питер, 2001.

диаграмма java приложение секторный

Приложение

Код приложения

import java.awt.*; //импортируем пакеты

import java.io.*;

class PFields{ //Класс, описывающий поле

int zn;//значение поля

Color col; //цвет поля

}

class Fields{ //класс, содержащий поля

static boolean visib=false; //Отображать диаграмму или нет

static PFields[] a = new PFields[20];

static PFields[] b = new PFields[20];

static int count=0,countb=0;//размеры массива а и b

}

class MCanvas extends Canvas { //расширили класс Сanvas

public MCanvas () {

super();

//super.setSize(300, 300);

}

@Override

public void paint(Graphics g) { //переопределяем метод Paint у класса Canvas

g.setColor(Color.white); //Устанавливаем белый цвет

g.fillRect(10, 10, 300, 300); //Закрашиваем фон белым

if (Fields.visib) { //если разрешено, то рисуем диаграмму

int summ=0;

for (int i=0;i<Fields.count;i++)

summ+=Fields.a[i].zn; //считаем сумму всех значений

double x=(double)360/summ,y=0; //x - сколько приходится на 1 градус, y - текущее значение градусов

for (int i=0;i<Fields.count;i++){ //идем по нашим полям

Color c;

c = new Color((int)(Math.random()*255),(int)(Math.random()*255),(int)(Math.random()*255)); //генерируем новый цвет

if (Fields.a[i].col==null) Fields.a[i].col=c; //если цвет еще не выбран, то записываем его

g.setColor(Fields.a[i].col); //устанавливаем цвет

g.fillArc(50, 50, 200, 200,(int)Math.round(y) ,(int)Math.round(x * Fields.a[i].zn)); // закрашиваем нашу область

double arc=(double)y+(double)(x*Fields.a[i].zn/2); //находим значения градусов для середины текущего поля

g.setColor(Color.black); //устанавливаем черный цвет

double rarc=Math.toRadians(arc); //переводим градусы в радианы

double px=(250-150)*Math.cos(rarc)+150; //находим точку повернутую на угол rarc

double py=-(250-150)*Math.sin(rarc)+150;

// JOptionPane.showMessageDialog(this, Double.toString((int)px)+' '+Double.toString((int)py)+' '+Double.toString(arc));

g.drawString( String.valueOf(Fields.a[i].zn), (int)(px+150)/2,(int)(py+150)/2); //выводим значение

y+=x*Fields.a[i].zn; // устанавлием текущие градусы

}

}

}

}

public class NewJFrame extends javax.swing.JFrame {

public NewJFrame() {

initComponents();

//this.setSize(400, 300);

this.buttonGroup1.add(jRadioButton1); //добавляем радиобаттоны

this.buttonGroup1.add(jRadioButton2); //

this.canvas1=new MCanvas(); //создаем канву

this.canvas1.setBounds(200, 50, 300, 300); //устанавливаем размеры

this.add(this.canvas1); //добавляем

// this.add(this.canvas2);

}

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

buttonGroup1 = new javax.swing.ButtonGroup();

canvas1 = new java.awt.Canvas();

jButton1 = new javax.swing.JButton();

jTextField1 = new javax.swing.JTextField();

textField1 = new java.awt.TextField();

jButton3 = new javax.swing.JButton();

jRadioButton1 = new javax.swing.JRadioButton();

jRadioButton2 = new javax.swing.JRadioButton();

jLabel1 = new javax.swing.JLabel();

jLabel2 = new javax.swing.JLabel();

jButton5 = new javax.swing.JButton();

jButton6 = new javax.swing.JButton();

jLabel3 = new javax.swing.JLabel();

jLabel4 = new javax.swing.JLabel();

jLabel5 = new javax.swing.JLabel();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

setTitle("Cекторная параметрическая диаграмма");

setResizable(false);

addWindowListener(new java.awt.event.WindowAdapter() {

public void windowActivated(java.awt.event.WindowEvent evt) {

formWindowActivated(evt);

}

public void windowOpened(java.awt.event.WindowEvent evt) {

formWindowOpened(evt);

}

});

jButton1.setText("Ввод");

jButton1.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jButton1ActionPerformed(evt);

}

});

textField1.setEnabled(false);

jButton3.setText("Загрузить");

jButton3.setEnabled(false);

jButton3.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jButton3ActionPerformed(evt);

}

});

jRadioButton1.setSelected(true);

jRadioButton1.setText("Ручной ввод");

jRadioButton1.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jRadioButton1ActionPerformed(evt);

}

});

jRadioButton2.setText("Ввод из файла");

jRadioButton2.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jRadioButton2ActionPerformed(evt);

}

});

jLabel1.setFont(new java.awt.Font("Arial", 0, 11)); // NOI18N

jLabel1.setText("Ручной ввод");

jLabel2.setText("Файловый ввод");

jLabel2.setEnabled(false);

jButton5.setText("Конец ввода");

jButton5.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jButton5ActionPerformed(evt);

}

});

jButton6.setText("Построить");

jButton6.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jButton6ActionPerformed(evt);

}

});

jLabel3.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

jLabel3.setText("Панель управления");

jLabel4.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

jLabel4.setText("Панель графики");

jLabel5.setText("Имя файла");

jLabel5.setEnabled(false);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());

getContentPane().setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addGap(28, 28, 28)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(jLabel5)

.addComponent(jLabel2)

.addComponent(jLabel1)

.addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)

.addComponent(jButton5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 97, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(jButton1))

.addComponent(jButton6)

.addComponent(jRadioButton2)

.addComponent(jRadioButton1)

.addComponent(textField1, javax.swing.GroupLayout.PREFERRED_SIZE, 115, javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(jButton3))

.addContainerGap(343, Short.MAX_VALUE))

.addGroup(layout.createSequentialGroup()

.addComponent(jLabel3)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addComponent(jLabel4)

.addGap(128, 128, 128))))

);

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()

.addGap(29, 29, 29)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(jLabel3)

.addComponent(jLabel4))

.addGap(18, 18, 18)

.addComponent(jRadioButton1)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addComponent(jRadioButton2)

.addGap(45, 45, 45)

.addComponent(jLabel1)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(jButton1))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(jButton5)

.addGap(18, 18, 18)

.addComponent(jLabel2)

.addGap(18, 18, 18)

.addComponent(jLabel5)

.addGap(3, 3, 3)

.addComponent(textField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(10, 10, 10)

.addComponent(jButton3)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 49, Short.MAX_VALUE)

.addComponent(jButton6)

.addGap(26, 26, 26))

);

pack();

}// </editor-fold>

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

Fields.b[Fields.countb]=new PFields(); // создаем новое поле

Fields.b[Fields.countb].zn=Integer.valueOf(jTextField1.getText()); //добавляем туда введенное значение

jTextField1.setText(""); //очищаем поле для ввода

Fields.countb++; //увеличиваем размер массива

}

private void formWindowActivated(java.awt.event.WindowEvent evt) {

// TODO add your handling code here:

}

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

try {

BufferedReader in = new BufferedReader(new FileReader(textField1.getText())); //открываем файл

String str = "";

while (((str = in.readLine())) != null) //считываем строку из файла

{

Fields.b[Fields.countb]=new PFields(); //создаем новое поле

Fields.b[Fields.countb].zn=Integer.valueOf(str); //пишем туда значение

Fields.countb++; //увеличиваем размер массива

}

} catch (IOException e) {

}

textField1.setText(""); //очищаем поле с именем файла

// canvas1.repaint();

}

private void jRadioButton1ActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

if (jRadioButton1.isSelected()){ //если radiobutton1 активен, то активируем все, что связано

jLabel1.setEnabled(true); //с ручным вводом и блокируем все что связано с файловым вводом

jTextField1.setEnabled(true);

jButton1.setEnabled(true);

jButton5.setEnabled(true);

jLabel2.setEnabled(false);

jLabel5.setEnabled(false);

textField1.setEnabled(false);

jButton3.setEnabled(false);

}

}

private void jRadioButton2ActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

if (jRadioButton2.isSelected()){ //то же самое только для файлового ввода

jButton5.setEnabled(false);

jTextField1.setEnabled(false);

jLabel1.setEnabled(false);

jButton1.setEnabled(false);

textField1.setEnabled(true);

jLabel2.setEnabled(true);

jButton3.setEnabled(true);

jLabel5.setEnabled(true);

}

}

private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

// jButton1.setEnabled(false);

// cjTextField1.setEnabled(false);

}

private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

for (int i=0;i<Fields.countb;i++)

Fields.a[i]=Fields.b[i]; //перезаписываем массив

Fields.count=Fields.countb; //устанавливаем размер

for (int i=0;i<Fields.countb;i++) //очищаем массив b

Fields.b[i]=null;

Fields.countb=0;

Fields.visib=true; //разрешаем отрисовку диаграммы

canvas1.repaint(); //рисуем

}

private void formWindowOpened(java.awt.event.WindowEvent evt) {

// TODO add your handling code here:

for (int i=0;i<20;i++) //выделяем память под массив a

Fields.a[i] = new PFields();

}

/**

* @param args the command line arguments

*/

public static void main(String args[]) {

/* Set the Nimbus look and feel */

//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">

/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.

* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html

*/

try {

for (javax.swing.UIManager.LookAndFeelInfo info: javax.swing.UIManager.getInstalledLookAndFeels()) {

if ("Nimbus".equals(info.getName())) {

javax.swing.UIManager.setLookAndFeel(info.getClassName());

break;

}

}

} catch (ClassNotFoundException ex) { java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

} catch (InstantiationException ex) { java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

}

//</editor-fold>

/* Create and display the form */

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

new NewJFrame().setVisible(true);

}

});

}

// Variables declaration - do not modify

private javax.swing.ButtonGroup buttonGroup1;

private java.awt.Canvas canvas1;

private javax.swing.JButton jButton1;

private javax.swing.JButton jButton3;

private javax.swing.JButton jButton5;

private javax.swing.JButton jButton6;

private javax.swing.JLabel jLabel1;

private javax.swing.JLabel jLabel2;

private javax.swing.JLabel jLabel3;

private javax.swing.JLabel jLabel4;

private javax.swing.JLabel jLabel5;

private javax.swing.JRadioButton jRadioButton1;

private javax.swing.JRadioButton jRadioButton2;

private javax.swing.JTextField jTextField1;

private java.awt.TextField textField1;

// End of variables declaration

}

Размещено на Allbest.ru


Подобные документы

  • Создание и реализация программы в среде визуального программирования С++ Builder. Разработка ее алгоритма. Описание компонентов и их свойств, используемых в структуре приложения. Создание кнопок создания турниров по круговой системе и на выбывание.

    курсовая работа [4,6 M], добавлен 12.11.2013

  • Анализ возможных подходов к созданию web-приложения с использованием программирования Java и CGI. Разработка структуры базы данных и реализация полученной модели в рамках СУБД. Обеспечение диалога CGI-программы с пользователем, используя браузер.

    курсовая работа [310,9 K], добавлен 07.08.2011

  • Разработка и создание игры "Змейка". Использование динамически-активных принципов языка Java. Графические объекты программы. Описание игры, правила, теоретические сведения. Классы приложения. Типы данных. Реализация. Метод. Объект. Блок-схема игры.

    курсовая работа [12,4 K], добавлен 18.06.2008

  • Анализ информационной системы "Бурятия.INFO". Построение функциональной модели "Как надо", диаграммы прецедентов, диаграммы последовательности действий, диаграммы классов. Разработка программного приложения в интегрированной среде Intellij IDEA.

    дипломная работа [1,3 M], добавлен 13.04.2014

  • Создание языка программирования с помощью приложения "Java". История названия и эмблемы Java. Обзор многообразия современных текстовых редакторов. Обработка строки. Методы в классе String. Java: задачи по обработке текста. Примеры программирования.

    курсовая работа [276,1 K], добавлен 19.07.2014

  • История создания языка Java. Основные принципы объектно-ориентированного программирования. Структура, особенности синтаксиса и примеры прикладных возможностей использования языка Java, его преимущества. Перспективы работы программистом на языке Java.

    курсовая работа [795,9 K], добавлен 14.12.2012

  • Изучение объектно-ориентированного языка программирования Java, его функциональные возможности. Создание программного кода. Описание классов и методов, использованных в программе. Руководство пользователя, запуск сервера и клиентского приложения.

    курсовая работа [1,8 M], добавлен 16.09.2015

  • Назначение и возможности разработанного приложения для контроля активности сетевых и периферийных устройств предприятия. Язык программирования Java. Распределенные многоуровневые приложения. Структура базы данных, интерфейс разработанного приложения.

    курсовая работа [1,0 M], добавлен 16.12.2012

  • Кратка историческая справка развития языка Java. Анализ предметной области. Java platform, enterprise and standart edition. Апплеты, сервлеты, gui-приложения. Розработка программного кода, консольное приложение. Результаты работы апплета, сервлета.

    курсовая работа [549,2 K], добавлен 23.12.2015

  • Разработка структурной диаграммы программного модуля для целочисленного решения задачи линейного программирования с использованием симплекс-метода. Краткое описание всех уровней диаграммы с назначением всех ее блоков. Язык программирования Visual C#.

    курсовая работа [874,7 K], добавлен 27.02.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.