package maticegrafika; import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.lang.*; /** *

Title: Maticova kalkulacka

*

Description: Provadeni operaci s maticemi

*

Copyright: Lukas Stepan (c) 2006

*

Company: FEL CVUT

* @author Lukas Stepan * @version 1.1 */ class Okno1 extends JFrame implements ActionListener,ItemListener{ int iA,jA,iB,jB,iC,jC; int volba = 0; private int iDF = 0; JTextField [][]MAs = new JTextField[6][6]; JTextField [][]MBs = new JTextField[6][6]; double [][]MAi = new double[6][6]; double [][]MBi = new double[6][6]; double [][]MCi = new double[6][6]; GridBagLayout gbl; GridBagConstraints gbc; GridBagLayout gbl2; GridBagConstraints gbc2; Panel stred = new Panel(); Panel dole = new Panel(); Choice Operace = new Choice(); //JComboBox Operace = new JComboBox(); JTextField b ; JLabel Vysledek; JTextField Art = new JTextField(2); JTextField Ast = new JTextField(2); JTextField Brt = new JTextField(2); JTextField Bst = new JTextField(2); public Okno1 (){ //hlavni okno super ("Maticova kalkulacka"); setSize (530,600); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); Container kon = getContentPane(); // vrací kontejner kon.setBackground(new Color(100,100,240)); //prava strana a vrch Panel prava = new Panel(); Panel vrch = new Panel(); JButton exit = new JButton("Exit"); JButton help = new JButton("Help"); JButton VytvorMatici = new JButton("Vytvor matici"); JButton Vypocet = new JButton("Vypocet"); FlowLayout srf = new FlowLayout(); BorderLayout srb = new BorderLayout(); GridLayout gridLayout1 = new GridLayout(); prava.setLayout(gridLayout1); gridLayout1.setRows(10); gridLayout1.setVgap(20); gridLayout1.setHgap(20); kon.setLayout(srf); kon.setLayout(srb); Operace.addItem("Operace....."); Operace.addItem("Scitani"); Operace.addItem("Odecitani"); Operace.addItem("Nasobeni"); Operace.addItem("Transponovani"); Operace.addItem("Determinant"); Operace.setBackground(Color.lightGray); Operace.addItemListener(this); exit.addActionListener(this); kon.add(prava,srb.EAST); kon.add(vrch,srb.NORTH); kon.add(stred,srb.CENTER); kon.add(dole,srb.SOUTH); prava.add(VytvorMatici); prava.add(Vypocet); prava.add(Operace); prava.add(exit); prava.add(help); //rozmery matice A JLabel An = new JLabel("Matice A: "); JLabel As = new JLabel("Sl."); vrch.add(An); vrch.add(As); vrch.add(Ast); JLabel Ar = new JLabel("Ra."); vrch.add(Ar); vrch.add(Art); //rozmery matice B JLabel Bn = new JLabel(" Matice B: "); JLabel Bs = new JLabel("Sl."); vrch.add(Bn); vrch.add(Bs); vrch.add(Bst); JLabel Br = new JLabel("Ra."); vrch.add(Br); vrch.add(Brt); gbl = new GridBagLayout(); gbc = new GridBagConstraints(); stred.setLayout(gbl); gbl2 = new GridBagLayout(); gbc2 = new GridBagConstraints(); dole.setLayout(gbl2); //help //------------------------------------------------------------------------------ help.addActionListener(new ActionListener(){ public void actionPerformed (ActionEvent event){ JOptionPane.showMessageDialog(null, " Maticova kalkulacka je program,ktery usnadnuje\n"+ "reseni uloh s maticemi.Operace(scitani,odcitani,\n"+ "nasobeni,transponovani,determinant) lze provadet\n"+ "s maticemi do velikosti 5x5.\n"+ " Pri provadeni vypoctu s jednou matici je nutne zadat\n"+ "velikost matice B !!! jako 0x0 !!!\n\n\n"+ "Autor: Lukas Stepan stepal2@fel.cvut.cz\n\n"+ " Maticova kalkulacka v1.1\n"+ " Tento program je freeware.\n"+ " (C) 2006", "HELP", JOptionPane.INFORMATION_MESSAGE); }}); //vstup matic //------------------------------------------------------------------------------ VytvorMatici.addActionListener(new ActionListener(){ public void actionPerformed (ActionEvent event){ NulujGBL(stred); DejCislo(); if(iA>0 && iA<6 && jA>0 && jA<6 && iB>=0 && iB<6 && jB>=0 && jB<6){ VytvorNazev(0,2,"Matice A"); MaticeA(iA,jA); if(iB!=0 || jB!=0){ VytvorNazev(iA + 1, 2, "Matice B"); MaticeB(iA, jA, iB, jB); } setVisible(true); } else{ JOptionPane.showMessageDialog(null,"Chybne zadana hodnota,matice muze byt max 5x5", "ERROR", JOptionPane.ERROR_MESSAGE); } }}); Vypocet.addActionListener(new ActionListener(){ public void actionPerformed (ActionEvent event){ //plneni matice A //------------------------------------------------------------------------------ for(int i=0;i pivot) { pivot = MAi[i][k]; index = i; } double pom1=0; double pom2=0; int j=0; // vymena pivotniho radku znamena zmenu znamenka determinantu if (index != k) { D *= -1; for (j=k; j