Witam
Pisze prosta aplikacja, ktora ma wyswietlac dwa okienka w jedenm na byc pytanie i po nacisnieciu przycisku ma sie wysietlic odpowiedz ... mam problem ze stworzeniem klasy ktora pomagala by w reprezentacji danych, ktore maja sie wyswietlac na karteczkach... ponizej zamieszcam kod stworzony przeze mnie klas
KartaKwizowaEdytor
package kartakwizowaedytor;
import java.util.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.io.*;
public class KartaKwizowaEdytor {
private JTextArea pytanie;
private JTextArea odpowiedz;
private ArrayList<KartaKwizowa> listaKart;
private JFrame ramka;
public static void main(String[] args) {
KartaKwizowaEdytor edytor= new KartaKwizowaEdytor();
edytor.doDziela();
}
public void doDziela(){
ramka=new JFrame("Edytor kart kwizowych");
ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panelGlowny= new JPanel();
Font czcionkaDuza= new Font("sanserif", Font.BOLD, 24);
pytanie= new JTextArea(6, 20);
pytanie.setLineWrap(true);
pytanie.setFont(czcionkaDuza);
JScrollPane przewijaniePyt= new JScrollPane(pytanie);
przewijaniePyt.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
przewijaniePyt.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
odpowiedz= new JTextArea(6,20);
odpowiedz.setLineWrap(true);
odpowiedz.setWrapStyleWord(true);
odpowiedz.setFont(czcionkaDuza);
JScrollPane przewijanieOdp= new JScrollPane(odpowiedz);
przewijanieOdp.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
przewijanieOdp.setVerticalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
JButton przyciskNastepna= new JButton("Nastepna karta");
listaKart= new ArrayList<KartaKwizowa>();
JLabel etykietaPyt= new JLabel("Pytanie: ");
JLabel etykietaOdp= new JLabel("Odpowiedz: ");
panelGlowny.add(etykietaPyt);
panelGlowny.add(przewijaniePyt);
panelGlowny.add(etykietaOdp);
panelGlowny.add(przewijanieOdp);
panelGlowny.add(przyciskNastepna);
przyciskNastepna.addActionListener(new NastepnaKartaListener());
JMenuBar menu= new JMenuBar();
JMenu menuPlik= new JMenu("Plik");
JMenuItem opcjaNowa= new JMenuItem("Nowy");
JMenuItem opcjaZapisz= new JMenuItem("Zapisz");
opcjaNowa.addActionListener(new NowyMenuListener());
opcjaZapisz.addActionListener(new ZapiszMenuListener());
menuPlik.add(opcjaNowa);
menuPlik.add(opcjaZapisz);
menu.add(menuPlik);
ramka.setJMenuBar(menu);
ramka.getContentPane().add(BorderLayout.CENTER, panelGlowny);
ramka.setSize(500,600);
ramka.setVisible(true);
}
public class NastepnaKartaListener implements ActionListener{
public void actionPerformed(ActionEvent zd){
KartaKwizowa karta= new KartaKwizowa(pytanie.getText(), odpowiedz.getText());
listaKart.add(karta);
czyscKarte();
}
}
public class ZapiszMenuListener implements ActionListener{
public void actionPerfomed(ActionEvent zd){
KartaKwizowa karta= new KartaKwizowa(pytanie.getText(), odpowiedz.getText());
listaKart.add(karta);
JFileChooser plikDanych= new JFileChooser();
plikDanych.showSaveDialog(ramka);
zapiszPlik(plikDanych.getSelectedFile());
}
}
public class NowyMenuListener implements ActionListener{
public void actionPerformed(ActionEvent zd){
listaKart.clear();
czyscKarte();
}
}
private void czyscKarte(){
pytanie.setText("");
odpowiedz.setText("");
pytanie.requestFocus();
}
private void zapiszPlik(File plik){
try{
BufferedWriter pisarz= new BufferedWriter(new FileWriter(plik));
for(KartaKwizowa karta: listaKart){
pisarz.write(karta.getPytanie()+"/");
pisarz.write(karta.getOdpowiedz()+"\n");
}
pisarz.close();
}catch (Exception ex){
System.out.println("Nie mozna zapisac pliku kart");
ex.printStackTrace();
}
}
}
KwizGra
package kartakwizowaedytor;
import java.util.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
import java.io.*;
public class KwizGra {
private JTextArea pytanie;
private JTextArea odpowiedz;
private ArrayList<KartaKwizowa> listaKart;
private KartaKwizowa biezacaKarta;
private int indeksBiezacejKarty;
private JFrame ramka;
private JButton przyciskNastepnaKarta;
private boolean czyPrezentowanaOdpowiedz;
public static void main(String[] args){
KwizGra gra= new KwizGra();
gra.doDziela();
}
public void doDziela(){
ramka= new JFrame("Kwiz");
ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panelGlowny= new JPanel();
Font czcionkaDuza= new Font("sanserif", Font.BOLD,24);
pytanie= new JTextArea(10,20);
pytanie.setFont(czcionkaDuza);
pytanie.setLineWrap(true);
pytanie.setEditable(false);
JScrollPane przewijanieP= new JScrollPane(pytanie);
przewijanieP.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
przewijanieP.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
przyciskNastepnaKarta= new JButton("Pokaz pytanie");
panelGlowny.add(przewijanieP);
panelGlowny.add(przyciskNastepnaKarta);
przyciskNastepnaKarta.addActionListener(new NastepnaKartaListener());
JMenuBar pasekMenu= new JMenuBar();
JMenu menuPlik= new JMenu("Plik");
JMenuItem opcjaOtworz= new JMenuItem("Otworz zbior kart");
opcjaOtworz.addActionListener(new OtworzMenuListener());
menuPlik.add(menuPlik);
ramka.setJMenuBar(pasekMenu);
ramka.getContentPane().add(BorderLayout.CENTER, panelGlowny);
ramka.setSize(640,500);
ramka.setVisible(true);
}
public class NastepnaKartaListener implements ActionListener{
public void actionPerformed(ActionEvent zd){
if(czyPrezentowanaOdpowiedz){
pytanie.setText(biezacaKarta.getOdpowiedz());
przyciskNastepnaKarta.setText("Nastepna karta");
czyPrezentowanaOdpowiedz= false;
}else{
if(indeksBiezacejKarty<listaKart.size()){
pokazNastepnaKarte();
}else{
pytanie.setText("To była ostatnia karta");
przyciskNastepnaKarta.setEnabled(false);
}
}
}
}
public class OtworzMenuListener implements ActionListener{
public void actionPerformed(ActionEvent ev){
JFileChooser dialogFile= new JFileChooser();
dialogFile.showOpenDialog(ramka);
wczytajPlik(dialogFile.getSelectedFile());
}
}
public void wczytajPlik(File file){
listaKart= new ArrayList<KartaKwizowa>();
try{
BufferedReader czytelnik= new BufferedReader(new FileReader(file));
String wiersz=null;
while((wiersz=czytelnik.readLine())!=null){
tworzKarte(wiersz);
}
czytelnik.close();
}catch (Exception ex){
System.out.println("Nie mozna odczytac pliku z kartami!");
ex.printStackTrace();
}
pokazNastepnaKarte();
}
private void tworzKarte(String wieszDanych){
String[] wyniki= wierszDanych.split("/");
KartaKwizowa card= new KartaKwizowa(wyniki[0], wyniki[1]);
listaKart.add(card);
System.out.println("utworzono karte");
}
private void pokazNastepnaKarte(){
biezacaKarta= listaKart.get(indeksBiezacejKarty);
indeksBiezacejKarty++;
pytanie.setText(biezacaKarta.getPytanie());
przyciskNastepnaKarta.setText("Pokaz odpowiedz");
czyPrezentowanaOdpowiedz=true;
}
}
i ostania w ktorej jest problem KartaKwizowa
package kartakwizowaedytor;
import javax.swing.*;
class KartaKwizowa {
private JTextArea pytanie;
private JTextArea odpowiedz;
private String[] tablicaPytan;
private String[] tablicaOdpowiedzi;
private String wierszDanych;
public String getPytanie(){
String listaPytan="";
for(int i=0; i<tablicaPytan.length; i++){
listaPytan +=tablicaPytan[i]+" ";
}
return listaPytan;
}
public String getOdpowiedz(){
String listaOdpowiedzi="";
for(int i=0; i<tablicaOdpowiedzi.length; i++){
listaOdpowiedzi +=tablicaOdpowiedzi[i]+" ";
}
return listaOdpowiedzi;
}
}
Jak stworzyć klasę, ktora pomagala by w reprezentacji danych, ktore maja sie wyswietlac na karteczkach (okienkach)?
Dziekuje za jakie kolwiek odpowiedzi