Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
import javax.swing.*;
public class JInternalFrameDemo {
public static void main(String[] args) {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JDesktopPane desktop = new JDesktopPane();
f.add(desktop);
f.setSize(700, 500);
desktop.add(showHelp());
f.setVisible(true);
}
public static JInternalFrame showHelp() {
JInternalFrame internalFrame = new JInternalFrame("HELP", true, true,
false, false);
internalFrame.setSize(400, 300);
internalFrame.setLocation(100, 80);
internalFrame.setVisible(true);
JLabel label = new JLabel("<html><table border=\"1\">"
+ "<tr><td>Label</td><td>mit</td></tr>"
+ "<tr><td>HTML-</td><td>Text</td></tr>" + "</table></html>");
internalFrame.add(label);
return internalFrame;
}
}
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Cursor;
import java.awt.FlowLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JTextPane;
import javax.swing.JToolBar;
import javax.swing.KeyStroke;
import javax.swing.text.BadLocationException;
import javax.swing.text.Style;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyleContext;
import javax.swing.text.StyledDocument;
public class SwingFrame extends JFrame
implements ActionListener{
JEditorPane jeditorPane;
JTextField jtfStatus;
Container contentPane;
//einsendeaufgabe
JLayeredPane desktop;
//Menüobjekte:
JMenuBar menuBar;
JMenu menuFile, menuOpen, menuHelp;
JMenuItem jmiNew, jmiOpenFile, jmiOpenWeb, jmiClose, jmiSave, jmiSaveAs, jmiHelp, jmiAbout;
private Action actNewFile,actOpenFile,actSaveFile,actOpenWeb,actHelp,actAbout;
//Menüobjekt Icons
private JToolBar toolBar;
private JButton jbtbNew, jbtbOpenFile, jbtbOpenWeb, jbtbSave, jbtbHelp, jbtbAbout;
private String iconSize="24";
// Tooltips mit buttonfunktion
private final String TTT_NEW="Erstelle eine neu Datei";
private final String TTT_OPENFILE="Öffne eine Datei aus dem Filesystem des Rechners";
private final String TTT_WEB="Gib den URL einer Datei ein";
private final String TTT_SAVE="Datei am gleichen Ort speichern";
private final String TTT_HELP="hilfe zu diesem Programm";
private final String TTT_INFO="Info zu diesem Programm";
private KeyStroke keyStroke;
private FileBrowser fileBrowser;
private File file;
public SwingFrame() {
super("SwingFrame mit Menu");
setSize(600,450);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
contentPane=this.getContentPane();
createMenu();
}
public void createMenu(){
//hier : zusammenbau der Menüs....
menuBar=new JMenuBar();
setJMenuBar(menuBar);
//Datei-Menü
menuFile=new JMenu("Datei");
actNewFile=new AbstractAction("Neu...",new ImageIcon("images/New"+iconSize+".gif")){
public void actionPerformed(ActionEvent ae){jtfStatus.setText("\"Datei - Neu...\" gewählt.");
}
};
actNewFile.putValue(Action.SHORT_DESCRIPTION, TTT_NEW);
jmiNew=menuFile.add(actNewFile);
//Untermenü "Öffnen"(Jmenu-Objekt!)
menuOpen=new JMenu("Öffnen");
// durch das löchen = (menuOpen.add(jmiOpenFile);) überschreibe ich das label
jmiOpenFile=new JMenuItem("Dateisystem..."); // diese zeile muss vor den andern stehn immer bevor überschrieben wird
actOpenFile=new AbstractAction("Dateisystem...",new ImageIcon("images/Open"+iconSize+".gif")){
public void actionPerformed(ActionEvent ae){
String str= fileBrowser.chooseText("Datei wählen ","./");
jeditorPane.setContentType("text/plain");
if(str != null){
jeditorPane.setText(str);
jtfStatus.setText("\"Datei - Öffnen -"+" Dateisystem...\" gewählt");
}else{jtfStatus.setText("Keine Datei ausgewählt!");
}
}
};
//KeyStroke-Objekte (Shortcut) definieren:
keyStroke=KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK);
//Shortcut im Action-Objekt speichern
actOpenFile.putValue(Action.ACCELERATOR_KEY,keyStroke);
actOpenFile.putValue(Action.SHORT_DESCRIPTION, TTT_OPENFILE);
jmiOpenFile=menuOpen.add(actOpenFile);
jmiOpenWeb=new JMenuItem("Web...");
actOpenWeb=new AbstractAction("Web...",new ImageIcon("images/WebComponent"+iconSize+".gif")){
public void actionPerformed(ActionEvent ae){
// hier übergebe dem filebrowser die anweisung was er zu machen hat
URL url=fileBrowser.chooseURL("HTML - Seite wählen", "./");
if (url != null) {
try{
jeditorPane.setPage(url);
}catch(IOException ioe){
System.out.println(ioe.toString());
}
jtfStatus.setText("\"DAtei - Öffnen - "+" Web...\" gewählt.");
}
//das ist die ursprüngliche version damit habe ich angezeigt das ich den button gedrückt habe
// jtfStatus.setText("\"DAtei - Öffnen - "+" Web...\" gewählt.");
}
};
actOpenWeb.putValue(Action.SHORT_DESCRIPTION, TTT_WEB);
jmiOpenWeb=menuOpen.add(actOpenWeb);
//auch hier wieder diese zeiel wird überschrieben durch die zeile über ihr menuOpen.add(jmiOpenWeb);
menuFile.add(menuOpen);
//Schließen überschreiben
jmiClose=new JMenuItem("Schließen");
jmiClose.addActionListener(this);
menuFile.add(jmiClose);
//Trennlinie einfügen
menuFile.addSeparator();
actSaveFile=new AbstractAction("Speichern",new ImageIcon("images/Save"+iconSize+".gif")){
public void actionPerformed(ActionEvent ae){
if (file != null){ // File - Objekt deklarieren
jtfStatus.setText("\"Datei - Speichern\" gewählt.");
save();
}else {
jtfStatus.setText("Umgeleitet auf : \"Datei - Speichern als...\".");
saveAs();
}
}
};
actSaveFile.putValue(Action.SHORT_DESCRIPTION, TTT_SAVE);
jmiSave=menuFile.add(actSaveFile);
jmiSaveAs=new JMenuItem("Speichern als...",new ImageIcon("images/SaveAs"+iconSize+".gif"));
jmiSaveAs.addActionListener(this);
menuFile.add(jmiSaveAs);
menuBar.add(menuFile);
//HilfeMenü
menuHelp=new JMenu("?");
actHelp=new AbstractAction("Hilfe",new ImageIcon("images/Help"+iconSize+".gif")){
public void actionPerformed(ActionEvent ae){
showHelp(); // hier werden die methoden aufgerufen lösung 3c !
jtfStatus.setText("\" ? - Hilfe\" gewählt.");
}
};
actHelp.putValue(Action.SHORT_DESCRIPTION, TTT_HELP);
jmiHelp=menuHelp.add(actHelp);
// auch hier wieder durch oben drüber neu überschrieben jmiHelp=new JMenuItem("Hilfe");
menuHelp.add(jmiHelp);
menuHelp.addSeparator();
//jmiAbout=new JMenuItem("Info");
actAbout=new AbstractAction("Info",new ImageIcon("images/Information"+iconSize+".gif")){
public void actionPerformed(ActionEvent ae){
jtfStatus.setText("\"? - Info \" gewählt.");
showInfo(); // hier werden die Methoden aufgerufen Lösung 3c !!
}
};
actAbout.putValue(Action.SHORT_DESCRIPTION, TTT_INFO);
jmiAbout=menuHelp.add(actAbout);
menuHelp.add(jmiAbout);
menuBar.add(menuHelp);
// Statusfeld einbauen
jtfStatus=new JTextField("");
jtfStatus.setBackground(Color.black);
jtfStatus.setForeground(Color.white);
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.add(BorderLayout.SOUTH, jtfStatus);
//erstellt ein texteingabe feld
jeditorPane=new JEditorPane();
JScrollPane editorSP=new JScrollPane(jeditorPane);
panel.add(BorderLayout.CENTER, editorSP);
contentPane.add(BorderLayout.CENTER, panel);
//Tooltips ohne butten funktion
//jmiNew.setToolTipText("Erstelle eine neu Datei");
//jmiOpenFile.setToolTipText("Öffne eine Datei aus dem Filesystem des Rechners");
jmiOpenWeb.setToolTipText("Gib den URL einer Datei ein");
jmiClose.setToolTipText("Schließt die Anwendung ohne weitere Nachfrage");
//jmiSave.setToolTipText("Datei am gleichen Ort speichern");
jmiSaveAs.setToolTipText("Datei zum Speichern auswählen");
//jmiHelp.setToolTipText("hilfe zu diesem Programm");
//jmiAbout.setToolTipText("Info über dieses Programm");
//Mnemonic tastenkürzel
menuFile.setMnemonic('d');
jmiNew.setMnemonic('N');
menuOpen.setMnemonic('f');
jmiOpenFile.setMnemonic('e');
jmiOpenWeb.setMnemonic('w');
jmiClose.setMnemonic('s');
jmiSave.setMnemonic('p');
jmiSaveAs.setMnemonic('a');
//Toolbar erstellen
toolBar=new JToolBar();
jbtbNew=toolBar.add(actNewFile);
jbtbOpenFile = toolBar.add(actOpenFile);
jbtbOpenWeb = toolBar.add(actOpenWeb);
jbtbSave = toolBar.add(actSaveFile);
//abstand machen
toolBar.addSeparator();
jbtbHelp = toolBar.add(actHelp);
jbtbAbout = toolBar.add(actAbout);
//Toolbar dem JFrame hinzufügen
contentPane.add(BorderLayout.NORTH, toolBar);
fileBrowser=new FileBrowser(jtfStatus);
setVisible(true);
}
public static JInternalFrame showHelp(){
// JLayeredPane-Objekt holen
JInternalFrame internalFrame= new JInternalFrame("HELP",true,true,false,false);
internalFrame.setSize(400,300);
internalFrame.setLocation(100,80);
internalFrame.setVisible(true);
JLabel label = new JLabel("<html><table border=\"1\">"+
"<tr><td>Label</td><td>mit</td></tr>"+
"<tr><td>HTML-</td><td>Text</td></tr>"+
"</table></html>");
internalFrame.add(label);
return internalFrame;
}
public void showInfo(){
String url = "http://www.afu.com.intro.html";
try { JEditorPane internalFrame = new JEditorPane( url);
internalFrame.setEditable(false);
internalFrame.add( new JScrollPane(new JTextArea()) ); // hier erstell ich ein textfeld im internal frame
}catch (IOException e) {
System.err.println("ERror displaying"+url);
}
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// JLayeredPane-Objekt holen
//desktop=getLayeredPane();
JInternalFrame internalFrame= new JInternalFrame("Info",false,true,false,false); // hier gebe ich dem internalk frame name und sein schliesbarkeit
internalFrame.setSize(300,200);
internalFrame.setLocation(150, 140);
desktop.add(internalFrame , new Integer(300));// hier gebe ich an das es in der pop-layer ebene abgelegt werden soll integer 300
internalFrame.setVisible(true);
System.out.println("hab ichs gerafft?");
}
public static void main(String[] args){
new SwingFrame();
}
public void actionPerformed(ActionEvent ae) {
if(ae.getSource().equals(jmiClose))System.exit(0);
else if(ae.getSource().equals(jmiSaveAs)){
saveAs();
jtfStatus.setText("\"Datei - Speichern als...\"gewählt");
}
}
private void saveAs(){}
private void save(){fileBrowser.saveFile(file, jeditorPane.getText());}
}