czesc koledzy z forum 4programmers, mam taki problem, ze po dodaniu paru przedmiotow a pozniej probie ich usuniecia(na razie tylko wyspacjowanie tresci labela) usuwa tylko ostatni label, chociaz petla jest od poczatku do konca, sprawdzilem i w konsoli pokazuje mi ze labale sa wyspacjowane a jednak w oknie w labalu dalej jest tresc, probowalem repaintowac itd i nic :( nie rozumiem jak w jednej i tej samej petli moze wykonac sie tak jakby tylko dla ostatniego labala na liscie, licze na wasza pomoc!
package siamicio;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class okno extends JFrame implements ActionListener{
ArrayList<Przedmiot> lista = new ArrayList<Przedmiot>();
ArrayList<JCheckBox> chbx = new ArrayList<JCheckBox>();
ArrayList<JLabel> llNazwa = new ArrayList<JLabel>();
ArrayList<JLabel> llOcena = new ArrayList<JLabel>();
ArrayList<JLabel> llEcts = new ArrayList<JLabel>();
JLabel lNazwa, lOcena, lEcts, lWynik;
JButton bDodaj, bUsun, bZakoncz, bOblicz;
JTextField tNazwa, tOcena, tEcts;
static okno aplikacja;
JMenuBar pasek;
JMenu menuPlik;
JMenuItem mOtworz, mZapisz, mWyjscie;
public okno()
{
pasek = new JMenuBar();
menuPlik= new JMenu("Plik");
setJMenuBar(pasek);
pasek.add(menuPlik);
mOtworz = new JMenuItem("Otworz");
mZapisz = new JMenuItem("Zapisz");
mWyjscie = new JMenuItem("Wyjscie");
menuPlik.add(mZapisz);
menuPlik.add(mOtworz);
menuPlik.addSeparator();
menuPlik.add(mWyjscie);
mZapisz.addActionListener(this);
mOtworz.addActionListener(this);
mWyjscie.addActionListener(this);
setSize(700,500);
setTitle("Srednia");
setLayout(null);
tOcena = new JTextField("");
tNazwa = new JTextField("");
tEcts = new JTextField("");
tNazwa.setBounds(50,100,100,20);
tOcena.setBounds(200,100,100,20);
tEcts.setBounds(350,100,100,20);
add(tOcena);
add(tNazwa);
add(tEcts);
lOcena = new JLabel("Ocena");
lNazwa = new JLabel("Nazwa");
lEcts = new JLabel("Ects");
lWynik = new JLabel("Srednia:");
lNazwa.setBounds(50,70,100,20);
lOcena.setBounds(200,70,100,20);
lEcts.setBounds(350,70,100,20);
lWynik.setBounds(500,70,100,20);
add(lOcena);
add(lNazwa);
add(lEcts);
add(lWynik);
bDodaj = new JButton("Dodaj");
bDodaj.setBounds(20, 400, 100, 50);
bUsun = new JButton("Usun");
bUsun.setBounds(170, 400, 100, 50);
bZakoncz = new JButton("Zakoncz");
bZakoncz.setBounds(320, 400, 100, 50);
bOblicz = new JButton("Oblicz");
bOblicz.setBounds(470, 400, 100, 50);
add(bDodaj);
add(bUsun);
add(bZakoncz);
add(bOblicz);
bDodaj.addActionListener(this);
bUsun.addActionListener(this);
bZakoncz.addActionListener(this);
bOblicz.addActionListener(this);
}
public static void main(String[] args)
{
aplikacja = new okno();
aplikacja.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
aplikacja.setVisible(true);
}
public void odswiezanie()
{
llNazwa.clear();
llOcena.clear();
llEcts.clear();
chbx.clear();
JLabel nazwajlabel = new JLabel();
JLabel ocenajlabel = new JLabel();
JLabel ectsjlabel = new JLabel();
JCheckBox tempcheckbox = new JCheckBox();
for(int i=0;i<lista.size();i++) {
llNazwa.add(nazwajlabel);
llOcena.add(ocenajlabel);
llEcts.add(ectsjlabel);
llNazwa.get(i).setBounds(50,140+(i*20),100,20);
llOcena.get(i).setBounds(200,140+(i*20),100,20);
llEcts.get(i).setBounds(350,140+(i*20),100,20);
llNazwa.get(i).setText((lista.get(i).nazwa));;
llOcena.get(i).setText((Integer.toString(lista.get(i).ocena)));
llEcts.get(i).setText((Integer.toString(lista.get(i).ects)));
chbx.add(tempcheckbox);
chbx.get(i).setBounds(450,140+(i*20),100,20);
aplikacja.add(chbx.get(i));
aplikacja.add(llNazwa.get(i));
aplikacja.add(llOcena.get(i));
aplikacja.add(llEcts.get(i));
aplikacja.llNazwa.get(i).setVisible(true);
repaint();
}
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
String tempnazwa=tNazwa.getText();
Object zrodlo = e.getSource();
if (zrodlo == bDodaj)
{
Przedmiot tempprzedmiot=new Przedmiot(tempnazwa,Integer.parseInt(tOcena.getText()),Integer.parseInt(tEcts.getText()));
lista.add(tempprzedmiot);
tNazwa.setText("");
tOcena.setText("");
tEcts.setText("");
odswiezanie();
}
else if(zrodlo == mOtworz)
{
JFileChooser fc = new JFileChooser();
if (fc.showOpenDialog(null)==JFileChooser.APPROVE_OPTION)
{
File plik = fc.getSelectedFile();
}
}
else if(zrodlo == mZapisz)
{
JFileChooser fc = new JFileChooser();
if (fc.showSaveDialog(null)==JFileChooser.APPROVE_OPTION)
{
}
}
else if(zrodlo == bZakoncz || zrodlo== mWyjscie)
{
int odp =JOptionPane.showConfirmDialog(null,"czy na pewno chcesz wyłączyć program?","Potwierdzenie usunięcia",JOptionPane.YES_NO_OPTION);
if (odp ==JOptionPane.YES_OPTION)
{
dispose();
}
}
else if(zrodlo == bUsun)
{
int odp =JOptionPane.showConfirmDialog(null,"czy na pewno chcesz usunac oceny?","Potwierdzenie usunięcia",JOptionPane.YES_NO_OPTION);
if (odp ==JOptionPane.YES_OPTION)
{
for(int i=0;i<lista.size();i++)
{
llNazwa.get(i).setText("");
llOcena.get(i).setText("");
llEcts.get(i).setText("");
}
}
}
else if( zrodlo == bOblicz)
{
float y=0;
float d=0;
float wynik;
for ( int i=0; i<lista.size();i++)
{
y+= lista.get(i).ocena * lista.get(i).ects;
d+= lista.get(i).ects;
}
wynik = y/d;
JOptionPane.showMessageDialog(null, "Twoja srednia to:" + String.format("%.2f", wynik));
lWynik.setText("Srednia:\n "+ String.format("%.2f", wynik));
}
}
}
`
dodam caly kod bo moze cos bd wazne xd
dokladniej chodzi mi o ten moment
else if(zrodlo == bUsun)
{
int odp =JOptionPane.showConfirmDialog(null,"czy na pewno chcesz usunac oceny?","Potwierdzenie usunięcia",JOptionPane.YES_NO_OPTION);
if (odp ==JOptionPane.YES_OPTION)
{
for(int i=0;i<lista.size();i++)
{
llNazwa.get(i).setText("");
llOcena.get(i).setText("");
llEcts.get(i).setText("");
}
}
}