Foezjie
Legacy Member
Hallo iedereen,
na mijn eerste jaar Informatica gedaan te hebben was ik deze zomer van plan een echt deftig programma te schrijven. Ben dus al half en half begonnen. Het wordt een programma dat bijhoudt welke episodes, seizoenen van een bepaalde serie je al gezien hebt.
Dit is een snelle schets van de GUI:
Programmeertechnisch gezien heb ik al de fundamenten van het programma: de verschillende klasses met de basismethodes en een paar extra's.
Op school hebben we al eens een groot programma moeten schrijven (project voor het vak Objectgericht Programmeren) maar daar was nergens echt sprake van interactie met een gebruiker.
De problemen die ik nu heb, hebben vooral te maken met hoe ik de verschillende acties die de gebruiker kan doen moet verwerken in de code.
Als bijvoorbeeld een gebruiker iets aanklikt wordt dit geregistreerd in mijn klasse MainWindow. Die wijst dan door naar een klasse Actions.
Een eerste probleem dat ik nu denk een beetje deftig opgelost te hebben is het aanpassen van de collectie. Daarmee bedoel ik aanpassingen aan de verzameling van ArrayLists met respectievelijk Series, Seizoen en Episodes (Ik heb dus een ArrayList van Series in mijn classe ShowCollection, een ArrayList van Seizoenen in mijn classe Show, ...)
Ik werk met een klasse SystemVariables die onder andere de ShowCollection bijhoudt met alle Series. Deze wordt in de main aangemaakt en steeds doorgeven naar alle klasses die mogelijks aanpassingen moeten doen aan die ShowCollection.
Een ander probleem dat ik heb is hoe ik de collectie van de gebruiker moet opslaan. Ik had gedacht om deze weg te schrijven naar een XML bestand. Dit lijkt mij doenbaar voor simpele dingen (zie hier ) maar ik weet niet in welke mate dit geschikt is om ook een goed vormgegeven XML document te hebben als je werkt met ArrayLists enzo als attributen. Weet iemand of dit zal werken? (Indien nee, een alternatief?)
Zoals je kan zien op de afbeelding werk ik met een Tree om de collectie van de gebruiker weer te geven. Het probleem dat ik hierbij heb is dat ik geprobeerd heb een testboompje te maken en weer te geven, maar dit lukt mij niet.
Hier is de code van MainWindow:
Ik krijg dus wel mijn venster, maar mijn Tree wordt niet getoond. Weet iemand waaraan dit ligt?
In het kort dus:
Alle hulp wordt ten zeerste geapprecieerd
Foezjie
na mijn eerste jaar Informatica gedaan te hebben was ik deze zomer van plan een echt deftig programma te schrijven. Ben dus al half en half begonnen. Het wordt een programma dat bijhoudt welke episodes, seizoenen van een bepaalde serie je al gezien hebt.
Dit is een snelle schets van de GUI:
Programmeertechnisch gezien heb ik al de fundamenten van het programma: de verschillende klasses met de basismethodes en een paar extra's.
Op school hebben we al eens een groot programma moeten schrijven (project voor het vak Objectgericht Programmeren) maar daar was nergens echt sprake van interactie met een gebruiker.
De problemen die ik nu heb, hebben vooral te maken met hoe ik de verschillende acties die de gebruiker kan doen moet verwerken in de code.
Als bijvoorbeeld een gebruiker iets aanklikt wordt dit geregistreerd in mijn klasse MainWindow. Die wijst dan door naar een klasse Actions.
Een eerste probleem dat ik nu denk een beetje deftig opgelost te hebben is het aanpassen van de collectie. Daarmee bedoel ik aanpassingen aan de verzameling van ArrayLists met respectievelijk Series, Seizoen en Episodes (Ik heb dus een ArrayList van Series in mijn classe ShowCollection, een ArrayList van Seizoenen in mijn classe Show, ...)
Ik werk met een klasse SystemVariables die onder andere de ShowCollection bijhoudt met alle Series. Deze wordt in de main aangemaakt en steeds doorgeven naar alle klasses die mogelijks aanpassingen moeten doen aan die ShowCollection.
Een ander probleem dat ik heb is hoe ik de collectie van de gebruiker moet opslaan. Ik had gedacht om deze weg te schrijven naar een XML bestand. Dit lijkt mij doenbaar voor simpele dingen (zie hier ) maar ik weet niet in welke mate dit geschikt is om ook een goed vormgegeven XML document te hebben als je werkt met ArrayLists enzo als attributen. Weet iemand of dit zal werken? (Indien nee, een alternatief?)
Zoals je kan zien op de afbeelding werk ik met een Tree om de collectie van de gebruiker weer te geven. Het probleem dat ik hierbij heb is dat ik geprobeerd heb een testboompje te maken en weer te geven, maar dit lukt mij niet.
Hier is de code van MainWindow:
Code:
package jWatched.GUI;
import jWatched.Program.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.*;
import javax.swing.tree.DefaultMutableTreeNode;
public class MainWindow extends Actions implements ActionListener {
private JMenuBar bar;
private JMenuItem file, action;
private JMenuItem close, addSeason, showStats;
private JTree tree;
public MainWindow(SystemVariables vars) {
super(vars);
DefaultMutableTreeNode top = new DefaultMutableTreeNode("Collection");
createNodes(top);
tree = new JTree(top);
JFrame frame = new JFrame("jWatched");
frame.setContentPane(setUpContentPane());
frame.setJMenuBar(constructMenuBar());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600, 500);
frame.setVisible(true);
}
private JPanel setUpContentPane() {
JPanel totalGUI = new JPanel();
totalGUI.setLayout(null);
JScrollPane treeView = new JScrollPane(tree);
totalGUI.add(treeView);
return totalGUI;
}
private JMenuBar constructMenuBar() {
bar = new JMenuBar();
//File
file = new JMenu("File");
file.setMnemonic(KeyEvent.VK_F);
bar.add(file);
//File -> Close
close = new JMenuItem("Close");
close.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.ALT_MASK));
file.add(close);
close.addActionListener(this);
//Action
action = new JMenu("Action");
action.setMnemonic(KeyEvent.VK_A);
bar.add(action);
//Action -> Add show
addSeason = new JMenuItem("Add new show");
addSeason.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.ALT_MASK));
action.add(addSeason);
addSeason.addActionListener(this);
//Action -> Show stats
showStats = new JMenuItem("Show stats");
action.add(showStats);
showStats.addActionListener(this);
return bar;
}
private void createNodes(DefaultMutableTreeNode top) {
DefaultMutableTreeNode season = null;
DefaultMutableTreeNode episode = null;
Show newShow = new Show("Friends", 10);
Season season1 = new Season(newShow, 1);
season = new DefaultMutableTreeNode(season1.getName());
top.add(season);
episode = new DefaultMutableTreeNode(new Episode("Episode 1", season1, 1));
season.add(episode);
episode = new DefaultMutableTreeNode(new Episode("Episode 2", season1, 2));
season.add(episode);
episode = new DefaultMutableTreeNode(new Episode("Episode 3", season1, 3));
season.add(episode);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == close) {
System.exit(0);
} else if (e.getSource() == addSeason) {
addNewShow(vars);
} else if (e.getSource() == showStats) {
showStats();
}
}
}
Ik krijg dus wel mijn venster, maar mijn Tree wordt niet getoond. Weet iemand waaraan dit ligt?
In het kort dus:
- Is het mogelijk de collectie op te slaan in XML?
- Waarom wordt mijn tree niet getoond?
Alle hulp wordt ten zeerste geapprecieerd
Foezjie


