Poczytalem wasze ostatnie podpowiedzi, i wszystko było fajnie. Za co jeszcze raz dzięki.
Chce jednak przeniesc tworzenie nowego okna po przycisku i tak tez zrobiłem. Nowy problem to nie zamykanie sie starego, czyli obiekt dalej istnieje. Chciałem ukryc okno przez dispose (no i tak zrobilem) problem w tym zeteraz akcje wykonuja sie tyle razy ile jest obiektow a nie tylko raz jak chciałem
package firma3;
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.*;
import javax.swing.*;
import java.io.FileReader;
import java.io.PrintWriter;
import javax.swing.table.AbstractTableModel;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Rozlicz_harmonogram extends JFrame implements ActionListener,WindowListener
{
String aktualny_pracownik;
int licznik=0;
private static int count = 0,wielkosc_tabeli=0;
static JButton zapisz = new JButton(new ImageIcon("C:/Firma3/vka.jpg"));
//-----------------------------------------------------------------------------
static JComboBox status = new JComboBox();
private static String[][] dane,dane2;
//_Listy----------------------------------------------------------------------
final String fileName_zlecenia = "C:/Firma3/zlecenia.txt";
ArrayList <Zlecenie> zlecenia = new ArrayList<Zlecenie>();
static final String fileName_stany = "C:/Firma3/stany.txt";
static ArrayList <Stan> stany = new ArrayList<Stan>();
//-----------------------------------------------------------------------------
public static void RozliczZlecenie()
{
count++;
if(wielkosc_tabeli==0){System.out.println("Nie masz zleceń!!");}
if(wielkosc_tabeli>0){
JPanel panel = new JPanel();
//------------------------------------------------------------
JLabel naglowek_numer=new JLabel("Nr zlecenia: ");
naglowek_numer.setBounds(5,5,200,20);
panel.add(naglowek_numer);
String numer=dane2[count-1][0];
JLabel napis_numer=new JLabel(numer);
napis_numer.setBounds(100,5,200,20);
panel.add(napis_numer);
//------------------------------------------------------------
JLabel naglowek_data=new JLabel("Data przyjecia: ");
naglowek_data.setBounds(5,25,200,20);
String data=dane2[count-1][1];
panel.add(naglowek_data);
JLabel napis_data=new JLabel(data);
napis_data.setBounds(100,25,200,20);
panel.add(napis_data);
//------------------------------------------------------------
JLabel naglowek_apteka=new JLabel("Apteka: ");
naglowek_apteka.setBounds(5,45,200,20);
panel.add(naglowek_apteka);
String apteka=dane2[count-1][5];
JLabel napis_apteka=new JLabel(apteka);
napis_apteka.setBounds(100,45,200,20);
panel.add(napis_apteka);
//------------------------------------------------------------
JLabel naglowek_status=new JLabel("Status: ");
naglowek_status.setBounds(5,65,200,20);
panel.add(naglowek_status);
stany = new ArrayList<Stan>(EmployeeListDecorator3.readList(fileName_stany));
status.addItem("Zakończone");
for(int i=0;i<stany.size();i++)
{
Stan a=stany.get(i);
status.addItem(a._nazwa_stanu);
}
status.setBounds(100,65,200,20);
panel.add(status);
//------------------------------------------------------------
JLabel naglowek_cel=new JLabel("Cel: ");
naglowek_cel.setBounds(5,90,200,20);
panel.add(naglowek_cel);
JTextArea pole_cel=new JTextArea();
pole_cel.setLineWrap(true);
pole_cel.setText(dane2[count-1][7]);
pole_cel.setBounds(100,90,600,60);
panel.add(pole_cel);
//------------------------------------------------------------
JLabel naglowek_rozwiazanie=new JLabel("Rozwiazanie: ");
naglowek_rozwiazanie.setBounds(5,160,200,20);
panel.add(naglowek_rozwiazanie);
JTextArea pole_rozwiazanie=new JTextArea();
pole_rozwiazanie.setLineWrap(true);
pole_rozwiazanie.setText(dane2[count-1][8]);
pole_rozwiazanie.setBounds(100,180,600,60);
panel.add(pole_rozwiazanie);
//------------------------------------------------------------
zapisz.setToolTipText("Kliknij aby dodać zecenie");
zapisz.setBounds(650, 5, 50, 50);
panel.add(zapisz);
//------------------------------------------------------------
panel.setLayout(null);
final JFrame okno = new JFrame("Rozlicz zlecenie");
okno.setSize(730,300);
okno.add(panel);
okno.setVisible(true);
okno.setLocationRelativeTo(null);
zapisz.addMouseListener(new MouseAdapter()
{
public void mouseClicked(final MouseEvent e)
{
if (e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() == 1)
{
<b>System.out.println("Nie masz zleceń!!");</b>
okno.dispose();
if(count < wielkosc_tabeli){RozliczZlecenie();}
}
}
});
//------------------------------------------------------------
okno.addWindowListener(new WindowListener()
{
public void windowActivated(WindowEvent e) { }
public void windowClosed(WindowEvent e) { }
public void windowDeactivated(WindowEvent e) { }
public void windowDeiconified(WindowEvent e) { }
public void windowIconified(WindowEvent e) { }
public void windowOpened(WindowEvent e) { }
public void windowClosing(WindowEvent e) { }
public void actionPerformed(ActionEvent evt){ }
//----------------------------------------------------------
});
}
}
//-----------------------------------------------------------------------------
public Rozlicz_harmonogram(final String aktualny_pracownik)
{
this.aktualny_pracownik=aktualny_pracownik;
//---- wczytywanie pliku --------------------------------------------------
zlecenia = new ArrayList<Zlecenie>(EmployeeListDecorator4.readList(fileName_zlecenia));
//======== wczytywanie danych ==================================================
dane=new String[zlecenia.size()][10]; //wiersze, kolumny
for (int i=0;i<zlecenia.size();i++)
{
for (int j=0;j<9;j++)
{
dane[i][0]=zlecenia.get(i)._numer;
dane[i][1]=zlecenia.get(i)._data_przyjecia;
dane[i][2]=zlecenia.get(i)._przyjal;
dane[i][3]=zlecenia.get(i)._serwisuje;
dane[i][4]=zlecenia.get(i)._data_realizacji;
dane[i][5]=zlecenia.get(i)._apteka;
dane[i][6]=zlecenia.get(i)._status;
dane[i][7]=zlecenia.get(i)._cel;
dane[i][8]=zlecenia.get(i)._rozwiazanie;
}
if((zlecenia.get(i)._serwisuje.equals(aktualny_pracownik))&&((zlecenia.get(i)._status.equals("Zakończone"))||(zlecenia.get(i)._status.equals("Przyjęte"))||(zlecenia.get(i)._status.equals("Serwisowane")))) {wielkosc_tabeli++;}
}
//-----------------------------------------------------------------------
dane2=new String[wielkosc_tabeli][10]; //wiersze, kolumny
for (int i=0;i<zlecenia.size();i++)
{
if(((zlecenia.get(i)._status.equals("Zakończone"))||(zlecenia.get(i)._status.equals("Przyjęte"))||(zlecenia.get(i)._status.equals("Serwisowane")))&&((zlecenia.get(i)._serwisuje.equals(aktualny_pracownik))))
{
for (int j=0;j<9;j++)
{
dane2[licznik][j]=dane[i][j];
}
licznik++;
}
}
//==============================================================================
RozliczZlecenie();
}
public void actionPerformed(ActionEvent evt) { }
public void windowOpened(WindowEvent e) { }
public void windowClosing(WindowEvent e) { }
public void windowClosed(WindowEvent e) { }
public void windowIconified(WindowEvent e) { }
public void windowDeiconified(WindowEvent e) { }
public void windowActivated(WindowEvent e) { }
public void windowDeactivated(WindowEvent e) {}
//--------------------------------------------------------------------------
}
Akcja ta wytłuszczona wykonuje sie przy jendym kliknieciu przycisku o zawsze o jeden raz więcej. czyli 1,2,3,4.... do. Jak akcje czyli ten wyswietlanie tego napisu miałem w public void windowClosing(WindowEvent e) { } Wszystko było ok
Troche kombinowałem i chciałem umieścic przycisk w
public void actionPerformed(ActionEvent evt)
{
if(zapisz==dodaj_noda)
{
System.out.println("Nie masz zleceń!!");
}
I tak by było super ale pojawia sie taki bład przy deklaracji, gdzy wstawiłem do public static void RozliczZlecenie() kod :
zapisz.setToolTipText("Kliknij aby dodać zecenie");
zapisz.setBounds(650, 5, 50, 50);
panel.add(zapisz);
dodaj_noda.addActionListener(this);
pojawiał sie błąd:
non-static variable this cannot referend from a static contexst.
Najlepiej by bylo sie pozbyc tych wszystkich static, ale prawde mowiac czesc kodu do petli zaczerpnełem od was i teraz nie wiem jak to zrobić
Widac jeszcze wiel sie musze nauczyc, do dopiero moj 2 miesiac z java ;/