Додаток Г. Програмний код класу GUI 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Додаток Г. Програмний код класу GUI



 

import javax.swing.*;

import java.awt.*;

import java.net.*;

import java.io.*;

import java.util.*;

import java.awt.image.BufferedImage;

import java.awt.event.ActionListener;

import java.awt.event.ActionEvent;

import javax.imageio.ImageIO;

import javax.swing.table.DefaultTableModel;

import java.text.SimpleDateFormat;

import org.swixml.SwingEngine;

import static org.math.array.DoubleArray.*;

public class GUI

{

private static XMLInterface xml;

private static Controller c;

private static int [] uplimits,downlimits;

private JFrame mainDialog,aboutDialog,graphDialog,zadDialog;

private JPanel graphPanel;

private JTextPane about_txtDescr;

private JLabel picLabel;

private JButton btn_start, btn_contol, btn_graph, btn_z1, btn_about;

private JButton cmdChangeMode, cmdShowGraph;

private JProgressBar pry1, pry2, pru1, pru2;

private JLabel lby1, lby2;

private JSpinner spu1, spu2, spz1,spz2;

private JTable logTable;

private DefaultTableModel tablemodel;

private javax.swing.Timer timer;

private static final String MAIN_DESCRIPTOR="forms/main_window.xml";

private static final String ABOUT_DESCRIPTOR="forms/about.xml";

private static final String GRAPH_DESCRIPTOR="forms/graph.xml";

private static final String ZAD_DESCRIPTOR="forms/zad_window.xml";

private static final String SCHEME_FILE="img/tech_scheme.png";

private static final String HTML_FILE="docs/description.html";

private static final String CONTENT_TYPE="text/html; charset=utf-8";

private SwingEngine swix=new SwingEngine (this);

public void logEvent (String msgtype, String msgtext)

{

String TIME_FORMAT_NOW = "HH: mm: ss";

String DATE_FORMAT_NOW = "dd. MM. yy";

Calendar cal = Calendar.getInstance();

SimpleDateFormat sdf1 = new SimpleDateFormat(TIME_FORMAT_NOW);

SimpleDateFormat sdf2 = new SimpleDateFormat(TIME_FORMAT_NOW);

String[] data = {sdf1.format (cal.getTime()),

sdf2.format (cal.getTime()), msgtype, msgtext};

tablemodel.addRow (data);

}

 

public void initMainDialog() throws Exception

{

try

{

mainDialog=(JFrame)swix.render(MAIN_DESCRIPTOR);

mainDialog.setResizable(false);

final Toolkit toolkit=Toolkit.getDefaultToolkit();

final Dimension screenSize=toolkit.getScreenSize();

final int x=(screenSize.width-mainDialog.getWidth())/2;

final int y=(screenSize.height-mainDialog.getHeight())/2;

mainDialog.setLocation(x,y);

BufferedImage myPicture=ImageIO.read(new File(SCHEME_FILE));

picLabel.setIcon(new ImageIcon(myPicture));

SpinnerModel sm1=new SpinnerNumberModel(70,0,100,1);

SpinnerModel sm2=new SpinnerNumberModel(70,0,100,1);

spu1.setModel(sm1);

spu2.setModel(sm2);

tablemodel = new DefaultTableModel ()

{

@Override

public boolean isCellEditable (int row, int column)

{

return false;

};

};

tablemodel.addColumn("Час");

tablemodel.addColumn("Дата");

tablemodel.addColumn("Тип");

tablemodel.addColumn("Повідомлення");

logTable.setModel(tablemodel);

logTable.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);

logTable.getColumnModel().getColumn(0).setMaxWidth(80);

logTable.getColumnModel().getColumn(0).setMinWidth(80);

logTable.getColumnModel().getColumn(0).setWidth(80);

logTable.getColumnModel().getColumn(0).setPreferredWidth(80);

logTable.getColumnModel().getColumn(1).setMaxWidth(80);

logTable.getColumnModel().getColumn(1).setMinWidth(80);

logTable.getColumnModel().getColumn(1).setWidth(80);

logTable.getColumnModel().getColumn(1).setPreferredWidth(80);

logTable.getColumnModel().getColumn(2).setMaxWidth(120);

logTable.getColumnModel().getColumn(2).setMinWidth(120);

logTable.getColumnModel().getColumn(2).setWidth(120);

logTable.getColumnModel().getColumn(2).setPreferredWidth(120);

}

catch (Exception e)

{

System.out.println ("Error in main");

e.printStackTrace();

}

}

 

public void initAboutDialog() throws Exception

{

aboutDialog=(JFrame)swix.render(ABOUT_DESCRIPTOR);

aboutDialog.setResizable(false);

aboutDialog.setAlwaysOnTop(true);

final Toolkit toolkit=Toolkit.getDefaultToolkit();

final Dimension screenSize=toolkit.getScreenSize();

final int x=(screenSize.width-aboutDialog.getWidth())/2;

final int y=(screenSize.height-aboutDialog.getHeight())/2;

aboutDialog.setLocation(x,y);

Stringfilename=this.getClass().getClassLoader().getResource(HTML_FILE).toString();

about_txtDescr.setContentType(CONTENT_TYPE);

about_txtDescr.setPage(new URL(filename));

}

public void initZadDialog() throws Exception

{

zadDialog=(JFrame)swix.render(ZAD_DESCRIPTOR);

zadDialog.setResizable(false);

zadDialog.setAlwaysOnTop(true);

final Toolkit toolkit=Toolkit.getDefaultToolkit();

final Dimension screenSize=toolkit.getScreenSize();

final int x=(screenSize.width-zadDialog.getWidth())/2;

final int y=(screenSize.height-zadDialog.getHeight())/2;

zadDialog.setLocation(x,y);

double ynom[]=XMLInterface.getYnom();

int uplimits[]=XMLInterface.getUplimits();

int downlimits[]=XMLInterface.getDownlimits();

SpinnerModel sm1=new SpinnerNumberModel (ynom[0],downlimits[0], uplimits[0],1);

SpinnerModel sm2=new SpinnerNumberModel (ynom[1],downlimits[1], uplimits[1],1);

spz1.setModel(sm1);

spz2.setModel(sm2);

}

public GUI()

{

try

{

initAboutDialog();

initMainDialog();

initPlotDialog();

initZadDialog();

mainDialog.setVisible(true);

javax.swing.Timer t= new javax.swing.Timer(1000,new ClockListener());

t.start();

logEvent("Управління","процесзапущено");

logEvent("Управління","Контролервключено");

}

catch(Exception e)

{

System.out.println ("error in gui");

e.printStackTrace();

}

}

public void initPlotDialog()throws Exception

{

int uplimits[]=XMLInterface.getUplimits();

int downlimits[]=XMLInterface.getDownlimits();

graphDialog=(JFrame) swix.render(GRAPH_DESCRIPTOR);

graphDialog.setContentPane(Graph.createGraphPanel());//(downlimits[0], uplimits[0],downlimits[1], uplimits[1]));

}

public Action AC_MANUAL=new AbstractAction()

{

public void actionPerformed(ActionEvent e)

{

if(!c.getManual())

logEvent("Управление","Контроллеротключен");

else

logEvent("Управление","Контроллер включен");

c.setManual(!c.getManual());

if(c.getManual())

cmdChangeMode.setText("включитьконтроллер");

else

cmdChangeMode.setText("отключитьконтроллер");

}

};

public Action AC_CLOSE_ABOUTDIALOG=new AbstractAction()

{

public void actionPerformed(ActionEvent e)

{

aboutDialog.setVisible(false);

}

};

public Action AC_ABOUT=new AbstractAction()

{

public void actionPerformed(ActionEvent e)

{

aboutDialog.setVisible(true);

}

};

public Action AC_GRAPH=new AbstractAction()

{

public void actionPerformed(ActionEvent e)

{

graphDialog.setVisible(true);

}

};

public Action AC_ZAD=new AbstractAction()

{

public void actionPerformed(ActionEvent e)

{

zadDialog.setVisible(true);

}

};

public Action AC_WORK=new AbstractAction()

{

public void actionPerformed(ActionEvent e)

{

if(c.getWork()) logEvent ("Управлiння","Процесзупинений");

else logEvent("Управлiння","Процес запущено");

c.setWork(!c.getWork());

}

};

public Action AC_SETZ=new AbstractAction()

{

public void actionPerformed(ActionEvent e)

{

double ynom[]=XMLInterface.getYnom();

c.setZ(Double.valueOf(spz1.getValue().toString())-ynom[0],0);

c.setZ(Double.valueOf(spz2.getValue().toString())-ynom[1],1);

zadDialog.setVisible(false);

}

};

class ClockListener implements ActionListener

{

public void actionPerformed(ActionEvent e)

{

if(c.getWork())

{

double ynom[]=XMLInterface.getYnom();

double unom[]=XMLInterface.getUnom();

int uplimits[]=XMLInterface.getUplimits();

int downlimits[]=XMLInterface.getDownlimits();

lby1.setText(String.format("%.2f",c.getY(0)+ynom[0]));

lby2.setText(String.format("%.2f",c.getY(1)+ynom[1]));

pry1.setMaximum(uplimits[0]);

pry1.setMinimum(downlimits[0]);

pry1.setValue((int)(c.getY(0)+ynom[0]));

pry2.setMaximum(uplimits[1]);

pry2.setMinimum(downlimits[1]);

pry2.setValue((int)(c.getY(1)+ynom[1]));

Graph.addY(c.getY(0)+ynom[0],c.getY(1)+ynom[1]);

if((c.getY(0)+ynom[0])>uplimits[0]||(c.getY(0)+ynom[0])<downlimits[0])

{

if(pry1.isVisible())logEvent("Аварийное","Параметр у1 вышел за регламент");

pry1.setVisible(false);

lby1.setForeground(Color.red);

}

else

{

if(!pry1.isVisible())logEvent("Аварийное","Параметру1 вернулсяврегламент");

pry1.setVisible(true);

lby1.setForeground(Color.black);

pry1.setMaximum(uplimits[0]);

pry1.setMinimum(downlimits[0]);

pry1.setValue((int)(c.getY(0)+ynom[0]));

}

if(Controller.getManual())

{

spu1.setEnabled(false);

c.setU(Double.valueOf(spu1.getValue().toString())-unom[0],0);

spu2.setEnabled(false);

c.setU(Double.valueOf(spu2.getValue().toString())-unom[1],1);

}

else

{

spu1.setEnabled(false);

spu2.setEnabled(false);

spu1.setValue(c.getU(0)+unom[0]);

spu2.setValue(c.getU(1)+unom[1]);

 

}

}

}

}

}

 


 



Поделиться:


Последнее изменение этой страницы: 2016-09-20; просмотров: 148; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.118.193.232 (0.022 с.)