public void actionPerformed( ActionEvent event){ /** * Methode zum öffnen einer Datei * */ JFileChooser waehlen = new JFileChooser(); //Vector inhalt = new Vector(); waehlen.setMultiSelectionEnabled(false); try { if (waehlen.showOpenDialog(fenster) == JFileChooser.APPROVE_OPTION) { String dateiname = waehlen.getSelectedFile().getName(); SwingFenster fensterobjekt = new SwingFenster(); System.out.println ("Datei "+waehlen.getSelectedFile()+" geöffnet."); Vector <String> dateiinhalt = Streams.Dateilesen(waehlen.getSelectedFile()); for (int i=0; i < fensterobjekt.karte.length; i++){ JListData data = fensterobjekt.makeDataModel(fensterobjekt.karte[i],waehlen.getSelectedFile()); liste = fensterobjekt.jliste[i]; //System.out.println(data.getSize()); //System.out.println(fensterobjekt.karte[i]); System.out.println("vorher: "+liste.getModel().getElementAt(0)); //fensterobjekt.jliste[i].setModel(data); liste.setModel(data); liste.repaint(); //fensterobjekt.jliste[i].updateUI(); System.out.println("nachher: "+liste.getModel().getElementAt(0)); } //fensterobjekt.fensterupdaten(); System.out.println("test::: "+fensterobjekt.jliste[0].getModel().getElementAt(0)); } } catch (NullPointerException exp){ String nachricht = "Es wurde keine Datei ausgewählt!"; JOptionPane.showMessageDialog(fenster, nachricht, "Warnung",0); System.out.println(exp.getMessage()); } }
package gui;import java.awt.Component;import java.awt.Container;import java.awt.Dimension;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.io.File;import java.util.Vector;import javax.swing.JFileChooser;import javax.swing.JFrame;import javax.swing.JList;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTabbedPane;import javax.swing.JTextArea;import javax.swing.ListSelectionModel;import javax.swing.SwingUtilities;import javax.swing.UIManager;import javax.swing.event.ListSelectionEvent;import javax.swing.event.ListSelectionListener;import util.Streams;public class SwingFenster extends JFrame{ // Instanz- oder Membervariablen String[] karte = { "A", "B","C", "D","E","F", "G","H","I", "J", "K", "L", "M","N","O", "PQ","R","ST","UVW","XYZ"}; JPanel listPanel = new JPanel(); /** * JList */ public JList[] jliste = new JList[karte.length]; public JListData[] datamodellarray = new JListData[karte.length]; JPanel panel = new JPanel(); public JList liste; JListData dataModel; JTabbedPane tabbedPane = new JTabbedPane(); int i; Container cpane = this.getContentPane(); GridBagLayout grid = new GridBagLayout(); GridBagConstraints constraints = new GridBagConstraints(); public SwingFenster(){ // Konstruktor mit Parameter // Aufruf des Konstruktors der Oberklasse super("Swing Fenster"); this.setJMenuBar(new Menu(this)); //legt die Bar auf das Panel cpane.setLayout(grid); makeTabbedPane(new File("prog2Mappe.txt")); }// end of constructor // eigene Methoden void makeTabbedPane(File datei) { for (i=0; i < karte.length; i++){ panel = makeTextPanel(karte[i],datei,i); //übergibt karte[i],also den Karteikartenreitername an makeTextPanel tabbedPane.addTab(karte[i], null, panel, "Namen mit \"" + karte[i] + "\""); } cpane.add(tabbedPane); // tabbedPane auf Panel legen this.pack(); // alles packen } /** * Update look and feel * @param lafStyle (String) = * "javax.swing.plaf.metal.MetalLookAndFeel", * "com.sun.java.swing.plaf.motif.MotifLookAndFeel", * "com.sun.java.swing.plaf.windows.WindowsLookAndFeel", */ void updateLAF(String lafStyle){ System.out.println("updateLAF = " + lafStyle); try{ UIManager.setLookAndFeel( lafStyle ); SwingUtilities.updateComponentTreeUI( this ); } catch(Exception ex){ System.out.println("Fehler beim L&F " + ex.getMessage()); } this.pack(); // alles schön packen } public void fensterupdaten() { SwingUtilities.updateComponentTreeUI(this); System.out.println("fenster geupdated"); } public JPanel makeTextPanel(String buchstabe, File datei,int i) { liste = makeJList(buchstabe,datei,i); jliste[i] =liste; // Referenz von liste JPanel panel = new JPanel(); // Instanzierung eines JPanel-Objektes panel panel.setLayout(new GridLayout(1, 1)); // Festlegung des Layouts des JPanel-Objektes JScrollPane scrollPane = new JScrollPane(jliste[i]); //Hüllklasse für Scrollbalken scrollPane.setPreferredSize(new Dimension(450, 260)); //Festlegung der Grösse des scrollPanels liste.addListSelectionListener(new ListSelectionAdapter(liste)); /* Anbinden des ListSelectionListener an die liste */ panel.add(scrollPane); // ScrollPane wird auf das panel gelegt return panel; } /** * Methode, die die JList erstellt * * * @param buchstabe beinhaltet den Name des jeweiligen Karteikartereiters * @return */ public JList makeJList(String buchstabe, File datei,int i) { //Festlegung, wie die JListData aufgebaut werden soll(AbstractListModel) dataModel = makeDataModel(buchstabe,datei); // übergibt buchstabe an das JListmodel datamodellarray[i] = dataModel; /* Instanzierung eines JListData-Objektes*/ JList liste = new JList(datamodellarray[i]); jliste[i] =liste; /* Instanzierung einer JList liste, die als Übergabeparameter das JListData-Objekt beinhaltet.*/ liste.setLayoutOrientation(JList.VERTICAL); // Layout der liste festlegen liste.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); liste.setVisibleRowCount(-1); // liste wird sichtbar gemacht und ist nicht vorselektiert return liste; } public JListData makeDataModel(String buchstabe, File datei) { JListData dataModel2 = new JListData(datei,buchstabe); //System.out.println(dataModel2.getSize()); return dataModel2; } /** * Die Klasse ListSelectionAdapter dient dazu, die Werte aus dem Swing Fenster selectedName, * selectedIndex und selectedListe mit dem Selektierten zu aktualisieren. * */ class ListSelectionAdapter implements ListSelectionListener { JList meineListe; // Deklaration eines JList-Objektes /** * Der Konstruktor ListSelectionAdapter implementiert das JList-Objekt liste * und übergibt als Parameter die liste. * @param liste die selektierte Liste. */ public ListSelectionAdapter(JList liste) { meineListe= liste; // JList liste wird auf meineListe abgelegt } /** * Die Methode valueChanged wird aufgerufen bei Auswahl der Werte * @param ev ist das eingetretene Ereignis. */ public void valueChanged(ListSelectionEvent ev ) { if(ev.getValueIsAdjusting() == false){ String selectedName = (String)meineListe.getSelectedValue(); System.out.println("selektierter String " + selectedName); int selectedIndex = meineListe.getSelectedIndex(); System.out.println("selektierter Index " + selectedIndex); } } }// end of inner class ListSelectionAdapter /** * Methode, die den Inhalt der textarea ausliest, ihn nach zeilen trennt * und zurückgibt * */ /* public static String[] getkartelength() { return karte; } */ /** Hilfmethoden * * */ void addComponent ( Container container, Component component, int gridx, int gridy, int gridwidth, int gridheight) { addComponent(container,component, gridx, gridy,gridwidth, gridheight, GridBagConstraints.WEST); } void addComponent ( Container container, Component component, int gridx, int gridy, int gridwidth, int gridheight, int anchor) { GridBagConstraints constr = new GridBagConstraints(); constr.gridx = gridx; constr.gridy = gridy; constr.gridwidth = gridwidth; constr.gridheight = gridheight; constr.anchor = anchor; container.add(component,constr); } // innere Klassen }// end of class SwingFenster
package gui;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Vector;import javax.swing.JFileChooser;import javax.swing.JFrame;import javax.swing.JList;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JOptionPane;import util.Streams;public class Menu extends JMenuBar{ /** * */ private static final long serialVersionUID = 1L; JList liste; //public String[] kartenlänge = SwingFenster.getkartelength(); //public JListData[] dataModel = SwingFenster.getdatamodell(); //static Vector <String> data = new Vector<String>(10,1); //JListData data = new JListData(); //SwingFenster fenster2 = new SwingFenster(); //Vector dlist = null; //Menu menu = null; JMenu // PullDownMenu mnuFile = new JMenu("Datei"), mnuNamen = new JMenu("Namen"), mnulookfeel = new JMenu("look&feel"), mnuInfo = new JMenu("Info"); //Überpunkte JMenuItem mniFileOpen = new JMenuItem("öffnen"), mniFileSave = new JMenuItem("sichern"), mniEnde = new JMenuItem("beenden"); JMenuItem mnieinfügen = new JMenuItem("einfügen"), mnilöschen = new JMenuItem("löschen"), mniändern = new JMenuItem("ändern"); JMenuItem mniWindows = new JMenuItem("Windows"), mniMetal = new JMenuItem("Metal"), mniMotif = new JMenuItem("Motif"); JMenuItem mniAutor = new JMenuItem("Autor"), mniHelp = new JMenuItem("Hilfe"); SwingFenster fenster = null; // Konstruktor public Menu(JFrame f){ fenster = (SwingFenster)f; // Referenz auf das Fenster System.out.println("Menueleiste konstruiert."); // ----------------------------------------------- mnuFile.add( mniFileOpen ); // Item auf PulldownMenu legen mnuFile.add( mniFileSave ); // Item auf PulldownMenu legen mnuFile.addSeparator(); //Separator einfügen mnuFile.add( mniEnde ); // Item auf PulldownMenu legen // Listener anbinden ------------------------ mniFileOpen.addActionListener(new ActionAdapterread()); // ActionAdapter um zu lesen mniFileSave.addActionListener(new ActionAdapterwrite()); // ActionAdapter um zu schreiben mniEnde.addActionListener(new ActionAdapterExit()); // ActionAdapter um zu beenden mnuNamen.add(mnieinfügen); // Item auf PulldownMenu legen mnuNamen.add(mnilöschen); // Item auf PulldownMenu legen mnuNamen.add(mniändern); // Item auf PulldownMenu legen mnieinfügen.addActionListener(new ActionAdaptereinfügen()); // ActionAdapter um zu lesen mnilöschen.addActionListener(new ActionAdapterlöschen()); // ActionAdapter um zu schreiben mniändern.addActionListener(new ActionAdapterändern()); // ActionAdapter um zu beenden mnulookfeel.add( mniWindows ); // Item auf PulldownMenu legen mnulookfeel.add( mniMetal ); // Item auf PulldownMenu legen mnulookfeel.add( mniMotif ); // Item auf PulldownMenu legen // Listener anbinden ------------------------ mniWindows.addActionListener(new ActionAdapterchange()); // ActionAdapter zum ändern des look&feel mniMetal.addActionListener(new ActionAdapterchange()); // ActionAdapter zum ändern des look&feel mniMotif.addActionListener(new ActionAdapterchange()); // ActionAdapter zum ändern des look&feel mnuInfo.add(mniAutor);// Item auf PulldownMenu legen mnuInfo.add(mniHelp);// Item auf PulldownMenu legen mniAutor.addActionListener(new ActionAdapterAutor()); // ActionAdapter für Autoreninfos mniHelp.addActionListener(new ActionAdapterHelp()); // ActionAdapter der Hilfefunktion // PullDownMenu auf MenuLeiste legen this.add( mnuFile ); //PullDownMenu auf MenuLeiste legen this.add( mnuNamen ); // PullDownMenu auf MenuLeiste legen this.add( mnulookfeel ); // PullDownMenu auf MenuLeiste legen this.add(mnuInfo); }// end of constructor //------------- ActionListener Interfaces -------------------- // Actionadapter für das Einfügen von Namen class ActionAdaptereinfügen implements ActionListener{ public void actionPerformed(ActionEvent arg0) { SwingFenster fensterobjekt = new SwingFenster(); String s = (String) JOptionPane.showInputDialog( fenster, "Bitte geben sie den neuen Eintrag ein", "Neuer Eintrag", JOptionPane.INFORMATION_MESSAGE, null, null, "Name;Vorname"); // If a string was returned, say so. if ((s != null) && (s.length() > 0)) { System.out.println("eingefügt wird "+ s); String[] karte =fensterobjekt.karte; for (int k=0; k<karte.length; k++){ if (karte[k].contains(s.substring(0,1))) { System.out.println("ja"); //fensterobjekt.datamodellarray[k].addElement(s); System.out.println(fensterobjekt.datamodellarray[k].getElementAt(0)); } } } // If you're here, the return value was null/empty. else System.out.println("Bitte etwas eingeben!"); } } // Actionadapter für das Löschen von Namen class ActionAdapterlöschen implements ActionListener{ public void actionPerformed(ActionEvent arg0) { Object[] possibilities = {"ham", "spam", "yam"}; String o = (String)JOptionPane.showInputDialog( fenster, "Complete the sentence:\n" + "\"Green eggs and...\"", "Customized Dialog", JOptionPane.PLAIN_MESSAGE, null, possibilities, "ham"); //String s = (String) JOptionPane.showConfirmDialog(arg0, arg1) // If a string was returned, say so. if ((o != null) && (o.length() > 0)) { System.out.println("Green eggs and... " + o + "!"); } // If you're here, the return value was null/empty. else System.out.println("Come on, finish the sentence!"); } } // Actionadapter für das Ändern von Namen class ActionAdapterändern implements ActionListener{ public void actionPerformed(ActionEvent arg0) { //JOptionPane.showInputDialog( // fenster, "Eintrag ändern"); } } // Actionadapter für die Autordaten class ActionAdapterAutor implements ActionListener{ public void actionPerformed(ActionEvent arg0) { JOptionPane.showMessageDialog( fenster, "Autordaten"); } } // Actionadapter für die Hilfe class ActionAdapterHelp implements ActionListener{ public void actionPerformed(ActionEvent arg0) { /** * Methode zum Anzeigen der Hilfe * */ JOptionPane.showMessageDialog( fenster, "Datei: öffnet und speichert Dateien. Schließen beendet das Programm.\n" + "look&feel: ändert das Aussehn des Fensters.\n" + "Info: Infos über den Autor und die Hilfe.\n" + "ok button: schreibt den Namen und die Email in die Konsole.\n" + "klicken auf die restlichen Items: gibt ihren Namen auf der Konsole aus."); } } //Actionadapter zum Beenden class ActionAdapterExit implements ActionListener{ public void actionPerformed(ActionEvent arg0) /** * Methode zum beenden * */ { System.exit(0); } } //ActionAdapter für look&feel änderung class ActionAdapterchange implements ActionListener{ public void actionPerformed(ActionEvent ev) { /** * Methode um das look and feel einzustellen * */ Object quelle = ev.getSource(); if (quelle == mniWindows) { fenster.updateLAF("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); } if (quelle == mniMetal) { fenster.updateLAF("javax.swing.plaf.metal.MetalLookAndFeel"); } if (quelle == mniMotif) { fenster.updateLAF("com.sun.java.swing.plaf.motif.MotifLookAndFeel"); } } } //ActionAdapter zum lesen class ActionAdapterread implements ActionListener{ public void actionPerformed( ActionEvent event){ /** * Methode zum öffnen einer Datei * */ JFileChooser waehlen = new JFileChooser(); //Vector inhalt = new Vector(); waehlen.setMultiSelectionEnabled(false); try { if (waehlen.showOpenDialog(fenster) == JFileChooser.APPROVE_OPTION) { String dateiname = waehlen.getSelectedFile().getName(); SwingFenster fensterobjekt = new SwingFenster(); System.out.println ("Datei "+waehlen.getSelectedFile()+" geöffnet."); Vector <String> dateiinhalt = Streams.Dateilesen(waehlen.getSelectedFile()); for (int i=0; i < fensterobjekt.karte.length; i++){ JListData data = fensterobjekt.makeDataModel(fensterobjekt.karte[i],waehlen.getSelectedFile()); liste = fensterobjekt.jliste[i]; //System.out.println(data.getSize()); &nb Auf diesen Beitrag antworten Neuen Beitrag verfassen