~Java4Beginners~
~Java4Beginners~

Hilfefenster

Quellcode auf GitHub

Screenshots









xml-Datei



Benötigte Parameter

Das Template benötigt 3 Parameter:
  • Titel des Hilfefensters (String mit Titel, welcher in der Titelleiste des Hilfefensters angezeigt wird)
  • URL-Objekt mit Icon-Objekt, welches an Stelle der Kaffeetasse angezeigt wird. (URL URLICON = MCSE_frage_gui.class.getResource("Icon.gif");)
  • Pfadangabe zur xml-Datei, welche die Hilfetexte beinhaltet.

        Hilfe h = new Hilfe();
        h.setHilfe("Frageeditor MCSE", URLICON, "e://help.xml");

Klasse Hilfe


package hilfefenster;

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import javax.swing.DefaultListModel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.JTextPane;
import javax.swing.ListSelectionModel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import static javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.text.html.HTMLEditorKit;

/**
 * Hilfefenster
 * @author Markus Badzura
 * @version 1.0
 */
public class Hilfe extends JFrame implements ComponentListener, ListSelectionListener
        ,ChangeListener, ActionListener
{
    ///////////////////////////////////////////////////////////////////////////
    //                                                                       //
    // Deklaration ImageIcon - Objekt und Bildschirmgröße                    //
    //                                                                       //
    ///////////////////////////////////////////////////////////////////////////
    private final Dimension SCREENSIZE = java.awt.Toolkit.getDefaultToolkit().getScreenSize ();
    private final HilfeReadXml RHX = new HilfeReadXml();
    HilfeObjekt rht_temp;
    private List l_hilfetext = new ArrayList();
    private List l_suchhilfe = new ArrayList();
    private String[] htext;
    private HTMLEditorKit eKit = new HTMLEditorKit();
    boolean aktiv = false;
    ///////////////////////////////////////////////////////////////////////////
    //                                                                       //
    // Deklaration Hilfefenster Bedienelemente                               //
    //                                                                       //
    ///////////////////////////////////////////////////////////////////////////
    private JSplitPane jsp;
    private JScrollPane jsp_tabContent, jsp_right, jsp_tabSearch;
    private JList jl_hilfelink, jl_suchergebnis;
    private DefaultListModel dlm_suche = new DefaultListModel();
    private JTextPane jtp_antwort;
    private JTextField jtf_search;
    private JTabbedPane jtp_hilfe;
    private JButton jbt_suche;
    /**
     * Template für Hilffunktion
     * Öffnet ein Hilfefenster mit den Tabs Inhalt und Suchen
     * @param fenstertitel String Titel, welchen das Fenster haben soll
     * @param iconpfad String Pfad des Icons
     * @param xmlpfad String Pfad zur help.xml
     * @author Markus Badzura
     * @version 1.0
     */
    public void setHilfe(String fenstertitel, URL pfad, String xmlpfad)
    {
        try 
        {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } 
        catch (ClassNotFoundException | IllegalAccessException | InstantiationException | UnsupportedLookAndFeelException e) 
        {
            System.err.println("Setting Look and Feel Failed");
        }
        // Pfadangabe zum Image
        // Erstellen ImageIcon-Objekt
        ImageIcon ICON = new ImageIcon(pfad);
        this.setTitle(fenstertitel);
        this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
        this.setSize(SCREENSIZE.width/3,SCREENSIZE.height);
        this.setLocation((SCREENSIZE.width/3)*2+15,0);
        this.setLayout(null);
        this.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e)
            {
                exit();
            }
        });          
        this.addComponentListener(this);
        this.setIconImage(ICON.getImage());
        RHX.hilfeReadXml(xmlpfad);
        getHilfeText();
        setHilfeLink();
        setSplitPane();        
        setVisible(true);   
        aktiv = true;
    }
    /**
     * Prüfung, ob Hilfefenster bereits aktiv ist. Wenn aktiv, dann wird
     * das Hilfefenster in den Vordergrund geholt
     * @return aktiv Bool-Wert
     * @author Markus Badzura
     * @since 1.0
     */
    public boolean isAktiv()
    {
        if (aktiv)
        {
            this.setState(JFrame.NORMAL);   
        }
        return aktiv;
    }
     /**
     * Abfragedialog beim Beenden des Programmes, inclusive des Schließens
     * über ALT + F4 und dem Schließbutton über die Titelleiste.
     * @author Markus Badzura
     * @since 1.0
     */
    private void exit()
    {
        this.dispose();
    }
    /**
     * Liste mit den verfügbaren Hilfetupel lladen
     * @author Markus Badzura
     * @since 1.0.005
     */
    private void getHilfeText()
    {
        l_hilfetext = RHX.gehHilfethemen();
    }
    /**
     * Vorhandene Fragestellungen für die Hilfe auflisten
     * im Tab Inhalt
     * @author Markus Badzura
     * @since 1.0
     */
    private void setHilfeLink()
    {
        htext = new String[l_hilfetext.size()];
        for (int i = 0;i= 0)
                setAntwort(jl_hilfelink.getSelectedIndex(),1);
        }
        if (e.getSource() == jl_suchergebnis)
        {
            if (jl_suchergebnis.getSelectedIndex() >= 0)
                setAntwort(jl_suchergebnis.getSelectedIndex(),2);
        }
    }
    /**
     * ChangeListener, um auf Wechsel der Tabs zu reagieren
     * @param e auslösendes JTabbedPane
     * @author Markus Badzura
     * @since 1.0
     */
    @Override
    public void stateChanged(ChangeEvent e) 
    {
        jtf_search.setText("");
        jtp_antwort.setText("
"); jl_suchergebnis.removeAll(); jl_hilfelink.clearSelection(); dlm_suche.removeAllElements(); } /** * ActionListener, um auf Buttonklicks reagieren zu können * @param e Auslösender Button * @author Markus Badzura * @since 1.0 */ @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == jbt_suche) { fillSuche(); } } }

Klasse HilfeObjekt


package hilfefenster;

/**
 * Klasse zu Erstellen von Hilfetext-Objekte
 * @author Markus Badzura
 * @version 1.0
 */
public class HilfeObjekt 
{
    ///////////////////////////////////////////////////////////////////////////
    //                                                                       //
    // Deklaration Variablen                                                 //
    //                                                                       //
    ///////////////////////////////////////////////////////////////////////////    
    private String schlagwort;
    private String hilfelink;
    private String antwort;
    /**
     * Konstruktor zum Bilden eines Hilfetext-Objektes
     * @param schlagwort ausgelesenes Schlagwort aus XML-Datei
     * @param hilfelink ausgelesener Hilfelink aus XML-Datei
     * @param antwort ausgelesene Antwort aus XML-Datei
     * @author Markus Badzura
     * @since 1.0
     */
    HilfeObjekt(String schlagwort, String hilfelink, String antwort)
    {
        this.schlagwort = schlagwort;
        this.hilfelink = hilfelink;
        this.antwort = antwort;
    }
    /**
     * Schlagwort aus Objekt ausgeben
     * @return schlagwort String
     * @author Markus Badzura
     * @since 1.0
     */
    public String getSchlagwort()
    {
        return schlagwort;
    }
    /**
     * Hilfelink aus Objekt ausgeben
     * @return hilfelink String
     * @author Markus Badzura
     * @since 1.0
     */
    public String getHilfelink()
    {
        return hilfelink;
    }
    /**
     * Antwort aus Objekt ausgeben
     * @return antwort String
     * @author Markus Badzura
     * @since 1.0
     */
    public String getAntwort()
    {
        return antwort;
    }
}

Klasse HilfeReadXml


    package hilfefenster;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;

/**
 * Hilfefenster Auslesen des Hilfetextes aus XML-Datei
 * benötigt JDom in den Libraries
 * @author Markus Badzura
 * @version 1.0
 */
public class HilfeReadXml 
{
    ///////////////////////////////////////////////////////////////////////////
    //                                                                       //
    // Deklaration Variablen                                                 //
    //                                                                       //
    ///////////////////////////////////////////////////////////////////////////    
    private String schlagwort, hilfelink, antwort;
    private List rht;
    /**
     * Hilfethemen aus XML auslesen und in Hilfethema wandeln.
     * Speichern in List
     * @param xmlpfad Pfadangabe zur help.xml
     * @author Markus Badzura
     * @since 1.0
     */
    public void hilfeReadXml(String xmlpfad)
    {
	SAXBuilder builder = new SAXBuilder();
	File xmlFile = new File(xmlpfad);
        try 
        {
            rht = new ArrayList();
            Document document = (Document) builder.build(xmlFile);
            Element rootNode = document.getRootElement();
            List list = rootNode.getChildren("Hilfetext");         
            for (int i = 0; i < list.size(); i++) 
            {    
                Element node = (Element) list.get(i);
                schlagwort = node.getChild("Schlagwort").getText();
                hilfelink = node.getChild("Hilfelink").getText();
                antwort = node.getChild("Antwort").getText();	
                HilfeObjekt temp = new HilfeObjekt(schlagwort, hilfelink, antwort);
                rht.add(temp);
            }
        } 
        catch (JDOMException | IOException e) 
        {
            System.out.println(e);
        }
    } 
    /**
     * Hilfethemen übergeben
     * @return rht List<HilfeObjekt>
     * @author Markus Badzura
     * @since 1.0
     */
    public List gehHilfethemen()
    {
        return rht;
    }
}
nach oben Java4Beginners -- Seitenversion 1.0 -- Stand: 2017-06-04