Jestem dość zielony z javy, a pilnie potrzebuję to uruchomić, mógłby ktoś pomóc?
Mam 3 takie pliki:
Client.java:
package client;
import rmi.Calculator;
import gui.GUI;
import java.awt.Color;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.InputStreamReader;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
public class Client {
private GUI gui;
private Calculator stub;
public Calculator getStub() {
return stub;
}
public void connectServer() {
try {
Registry reg = LocateRegistry.getRegistry();
Calculator stub = (Calculator) reg.lookup("Calculator");
this.stub = stub;
} catch(Exception e) {
gui.getResultText().setDisabledTextColor(Color.red);
gui.getResultText().setText("Brak połączenia z serwerem.");
}
}
private static final long serialVersionUID = 1L;
JTable table;
JButton btnGen = new JButton("Utwórz");
JButton btnLicz = new JButton("Oblicz");
JTextField txt = new JTextField(5);
float macierz[][];
public class WyznacznikMacierzy extends JFrame implements ActionListener{
private static final long serialVersionUID = 1L;
JTable table;
JButton btnGen = new JButton("Utwórz");
JButton btnLicz = new JButton("Oblicz");
JTextField txt = new JTextField(5);
float macierz[][];
public static void main(String[] args)
{
new Client();
}
public WyznacznikMacierzy()
{
this.setSize(350,350);
this.setLayout(null);
JLabel l = new JLabel("Wielkość macierzy");
this.add(l);
txt.setText("5");
this.add(txt);
this.add(btnGen);
this.add(btnLicz);
//podlaczenie listeneera do buttonow
btnGen.addActionListener(this);
btnLicz.addActionListener(this);
l.setBounds(10, 20, 400, 24);
btnGen.setBounds(100,50,95,18);
btnLicz.setBounds(200,50,95,18);
txt.setBounds(20,50,80,18);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public void inicjalizacjaMacierzy()
{
int rozmiarMacuerzy;
//gdy ilosc kolumn nie jest liczba to zakladamy 5
try {
rozmiarMacuerzy = Integer.valueOf(txt.getText());
} catch (Exception e) {
rozmiarMacuerzy = 5;
}
macierz = new float[rozmiarMacuerzy][rozmiarMacuerzy];
if (table!=null) this.remove(table);
DefaultTableModel model = new DefaultTableModel(rozmiarMacuerzy,rozmiarMacuerzy);
table = new JTable(model);
table.setShowGrid(true);
table.setBorder(BorderFactory.createLineBorder(Color.black));
table.setBounds(new Rectangle(20,100,rozmiarMacuerzy*30,rozmiarMacuerzy*30));
table.setRowHeight(30);
TableColumn kolumny;
for (int a=0;a<table.getColumnCount();a++)
{
kolumny = table.getColumnModel().getColumn(a);
kolumny.setWidth(30);
}
this.add(table);
this.repaint();
}
//obliczenie wyznacznika macierzy
public float wyznacznikMacierzy(float[][] macierz, int wartość) {
float bufor[][];
float wynik = 0;
if (wartość == 1)
{
return macierz[0][0];
}
else
{
bufor = new float[wartość - 1][wartość - 1];
for (int a = 0; a < wartość; a++)
{
for (int b = 0; b < wartość - 1; b++)
{
for (int k = 0; k < wartość - 1; k++)
{
if (k<a)
{
bufor[b][k] = macierz[b + 1][k];
}
else
{
bufor[b][k] = macierz[b + 1][k+1];
}
}
}
if (a % 2 == 0) //minory (znak) i obliczenie kolejnej macierzy
{
wynik += macierz[0][a] * wyznacznikMacierzy(bufor, wartość - 1);
}
else
{
wynik -= macierz[0][a] * wyznacznikMacierzy(bufor, wartość - 1);
}
}
return wynik;
}
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource()==btnGen)
{
this.inicjalizacjaMacierzy();
}
if (e.getSource()==btnLicz)
{
for (int a=0;a<macierz.length;a++)
{
for (int b=0;b<macierz.length;b++)
{
//wartosci domyslne (gdy nie ma liczby to zero)
float value =0;
try {
value = Float.valueOf(table.getValueAt(a, b).toString());
} catch (Exception ex) {
value = 0;
table.setValueAt("0", a,b);
}
macierz[a][b] = value;
}
}
try {
JOptionPane.showMessageDialog(this,"Wyznacznik macierzy jest równy: "+wyznacznikMacierzy(macierz,macierz.length),"Info",1);
} catch (Exception e2)
{
JOptionPane.showMessageDialog(this,"Nie można obliczyć wyznacznika.","Błąd",1);
}
}
}
}
}
Calculator.java
package rmi;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface Calculator extends Remote {
public float wyznacznikMacierzy(float[][] macierz, int wartość) throws RemoteException;
}
i Server.java
package server;
import rmi.Calculator;
import gui.GUI;
import java.awt.event.ActionEvent;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;
import javax.swing.JOptionPane;
public abstract class Server implements Calculator {
public float wyznacznikMacierzy(float[][] macierz, int wartość) throws RemoteException
{
float bufor[][];
float wynik = 0;
if (wartość == 1)
{
return macierz[0][0];
}
else
{
bufor = new float[wartość - 1][wartość - 1];
for (int a = 0; a < wartość; a++)
{
for (int b = 0; b < wartość - 1; b++)
{
for (int k = 0; k < wartość - 1; k++)
{
if (k<a)
{
bufor[b][k] = macierz[b + 1][k];
}
else
{
bufor[b][k] = macierz[b + 1][k+1];
}
}
}
if (a % 2 == 0) //minory (znak) i obliczenie kolejnej macierzy
{
wynik += macierz[0][a] * wyznacznikMacierzy(bufor, wartość - 1);
}
else
{
wynik -= macierz[0][a] * wyznacznikMacierzy(bufor, wartość - 1);
}
}
return wynik;
}
}
public void actionPerformed(ActionEvent e) {
if (e.getSource()==btnGen)
{
this.inicjalizacjaMacierzy();
}
if (e.getSource()==btnLicz)
{
for (int a=0;a<macierz.length;a++)
{
for (int b=0;b<macierz.length;b++)
{
wartosci domyslne (gdy nie ma liczby to zero)
float value =0;
try {
value = Float.valueOf(table.getValueAt(a, b).toString());
} catch (Exception ex) {
value = 0;
table.setValueAt("0", a,b);
}
macierz[a][b] = value;
}
}
}
}
}