Hallo Kollegen , möchte mein kleines Programm als Applet in eine HTML Seite einbinden.
Habe auch mal nachgesehen und dabei entdeckt das hierfür unter anderem die Main-Klasse
entfernt werden soll und der Aufbau in etwa so sein soll. Ini(), Start(),Stop(),Destroy(),
allerdings habe ich das nicht ganz verstanden.
Die Ursprungsklassen wären folgende vielleicht kann mir ja jemand paar hilfreiche Tips geben.
[Java]
public class MiniMalMain {
public static void main(String[] args) {
new MiniMalGui("MiniMal");
}
[/code]
[Java]
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.JPanel;
import javax.swing.border.BevelBorder;
public class MiniMalBildPanel extends JPanel {
//automatisch über Eclipse ergänzt
private static final long serialVersionUID = 4141971349064683906L;
//für das Bild
private BufferedImage bild;
//für die Farbe
private Color farbe;
//der Konstruktor
public MiniMalBildPanel() {
setSize(800,600);
//einen Rahmen zeichnen
setBorder(new BevelBorder(BevelBorder.LOWERED));
//ein neues Bild in der Größe des Panels erzeugen
//als Typ verwenden wir INT_RGB
bild = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_RGB);
//den Grafik-Kontext beschaffen
Graphics g = bild.getGraphics();
//ein weißes Rechteck in der Größe des Bildes zeichnen, damit der Hintergrund weiß ist
g.setColor(Color.WHITE);
g.fillRect(0, 0, getWidth(), getHeight());
//den Grafik-Kontext wieder freigeben
g.dispose();
//die Standard-Farbe ist Schwarz
farbe = Color.BLACK;
}
//die überladenen Methode zum Zeichnen der Komponente
@Override
public void paintComponent(Graphics g) {
//die Methode der übergeordneten Klasse aufrufen
super.paintComponent(g);
//das Bild zeichnen
g.drawImage(bild, 0, 0, this);
}
//die Methode zeichnet ein Rechteck
//die Koordinaten, Breite und Höhe werden als Parameter übergeben
public void rechteck(int x1, int y1, int breite, int hoehe) {
//den Grafik-Kontext beschaffen
Graphics g = bild.getGraphics();
//die Farbe setzen
g.setColor(farbe);
//die Figur zeichnen
g.drawRect(x1, y1, breite, hoehe);
//den Grafik-Kontext freigeben
g.dispose();
//das Neuzeichnen anfordern
repaint();
}
//die Methode zeichnet einen Kreis
//die Koordinaten, Breite und Höhe des umgebenden Rechtecks werden als Parameter übergeben
public void kreis(int x1, int y1, int breite, int hoehe) {
//siehe rechteck()
Graphics g = bild.getGraphics();
g.setColor(farbe);
g.drawOval(x1, y1, breite, hoehe);
g.dispose();
repaint();
}
//die Methode zeichnet eine Linie
//Start- und Endpunkt werden als Parameter übergeben
public void linie(int x1, int y1, int x2, int y2) {
//siehe rechteck()
Graphics g = bild.getGraphics();
g.setColor(farbe);
g.drawLine(x1, y1, x2, y2);
g.dispose();
repaint();
}
//die Farbe setzen
public void farbeSetzen(Color farbe) {
this.farbe = farbe;
}
}
[/code]
geht das mit meinem Programm überhaupt ? ???:L
Habe auch mal nachgesehen und dabei entdeckt das hierfür unter anderem die Main-Klasse
entfernt werden soll und der Aufbau in etwa so sein soll. Ini(), Start(),Stop(),Destroy(),
allerdings habe ich das nicht ganz verstanden.
Die Ursprungsklassen wären folgende vielleicht kann mir ja jemand paar hilfreiche Tips geben.
[Java]
public class MiniMalMain {
public static void main(String[] args) {
new MiniMalGui("MiniMal");
}
[/code]
Java:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.AbstractAction;
import javax.swing.ImageIcon;
import javax.swing.JColorChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JToolBar;
import javax.swing.KeyStroke;
public class MiniMalGui extends JFrame{
//automatisch über Eclipse ergänzt
private static final long serialVersionUID = -2569945475900192306L;
//für die Anzeige
private MiniMalBildPanel mausPanel;
//für die Position
private int xPos, yPos;
//für das Werkzeug
private int werkzeug;
//für die Aktionen
private MeineAktionen beendenAct, rectAct, kreisAct, linieAct, farbeAct;
//eine innere Klasse für die Aktionen
class MeineAktionen extends AbstractAction {
//automatisch über Eclipse ergänzt
private static final long serialVersionUID = 1375901955180795320L;
//der Konstruktor
public MeineAktionen(String text, ImageIcon icon, String beschreibung, KeyStroke shortcut, String actionText) {
//den Konstruktor der übergeordneten Klasse mit dem Text und dem Icon aufrufen
super(text, icon);
//die Beschreibung setzen für den Bildschirmtipp
putValue(SHORT_DESCRIPTION, beschreibung);
//den Shortcut
putValue(ACCELERATOR_KEY, shortcut);
//das ActionCommand
putValue(ACTION_COMMAND_KEY, actionText);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("beenden"))
beenden();
if (e.getActionCommand().equals("rechteck"))
werkzeug = 1;
if (e.getActionCommand().equals("kreis"))
werkzeug = 2;
if (e.getActionCommand().equals("linie"))
werkzeug = 3;
if (e.getActionCommand().equals("farbauswahl"))
farbDialogZeigen();
}
}
//die innere Klasse für die Mausereignisse
//Sie wird von der Klasse MouseAdapter abgeleitet
//wir brauchen nur das Drücken und Loslassen
class MeinMausListener extends MouseAdapter {
@Override
public void mousePressed(MouseEvent e) {
super.mousePressed(e);
//die Koordinate als Startpunkt speichern
//aber nur, wenn die linke Maustaste gedrückt wurde
if (e.getButton() == MouseEvent.BUTTON1) {
xPos = e.getX();
yPos = e.getY();
}
}
@Override
public void mouseReleased(MouseEvent e) {
super.mouseReleased(e);
//wenn die linke Taste losgelassen wird, zeichnen wir von der alten
//zur aktuellen Position
//je nach Werkzeug wird etwas anders gezeichnet
if (e.getButton() == MouseEvent.BUTTON1) {
//ein Rechteck
if (werkzeug == 1)
mausPanel.rechteck(xPos, yPos, e.getX()-xPos, e.getY() - yPos);
//ein Kreis
if (werkzeug == 2)
mausPanel.kreis(xPos, yPos, e.getX()-xPos, e.getY() - yPos);
//die Linie
if (werkzeug == 3)
mausPanel.linie(xPos, yPos, e.getX(), e.getY());
}
}
}
//der Konstruktor
public MiniMalGui(String titel) {
super(titel);
//wir nehmen ein Border-Layout
setLayout(new BorderLayout());
beendenAct = new MeineAktionen("Beenden", null, "", null, "beenden");
rectAct = new MeineAktionen("Rechteck", new ImageIcon("icons/rect24.gif"), "Zeichnet ein Rechteck", null, "rechteck");
kreisAct = new MeineAktionen("Kreis", new ImageIcon("icons/circle24.gif"), "Zeichnet einen Kreis", null, "kreis");
linieAct = new MeineAktionen("Linie", new ImageIcon("icons/line24.gif"), "Zeichnet eine Linie", null, "linie");
farbeAct= new MeineAktionen("Farbauswahl", new ImageIcon("icons/color24.gif"), "Öffnet einen Dialog zur Farbauswahl", null, "farbauswahl");
//das Werkzeug ist 1 - also das Rechteck
werkzeug = 1;
//die Menuleiste erstellen und einfügen
menu();
//die Symbolleiste oben einfügen
add(symbolleiste(), BorderLayout.NORTH);
//ein neues Panel mit dem Bild
mausPanel = new MiniMalBildPanel();
//das Panel mit dem Listener verbinden
mausPanel.addMouseListener(new MeinMausListener());
//das Panel in der Mitte einfügen
add(mausPanel, BorderLayout.CENTER);
//anzeigen, Größe setzen und Standard-Verhalten festlegen
setSize(810,680);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
//die Methode erzeugt das Menü
private void menu() {
JMenuBar menue = new JMenuBar();
//das Menü Datei
JMenu dateiMenue = new JMenu("Datei");
//der Eintrag Beenden
JMenuItem dateiBeenden = new JMenuItem();
//die Action setzen
dateiBeenden.setAction(beendenAct);
//den Eintrag hinzufügen
dateiMenue.add(dateiBeenden);
//das gesamte Menü hinzufügen
menue.add(dateiMenue);
this.setJMenuBar(menue);
}
//die Methode erzeugt die Symbolleiste
private JToolBar symbolleiste() {
JToolBar leiste = new JToolBar();
//die Symbole für die Figuren
leiste.add(rectAct);
leiste.add(kreisAct);
leiste.add(linieAct);
leiste.addSeparator();
//für die Farbauswahl
leiste.add(farbeAct);
//die komplette Leiste zurückgeben
return (leiste);
}
//die Methode beendet nach einer Rückfrage die Anwendung
private void beenden() {
if(JOptionPane.showConfirmDialog(this, "Sind Sie sicher?","Anwendung schließen", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION)
System.exit(0);
}
//die Methode ruft einen Dialog zur Farbauswahl auf und setzt die neue Farbe
//über die Klasse des Panels mit der Grafik
private void farbDialogZeigen() {
//zum Zwischenspeichern
Color tempFarbe;
//den Farbauswahl-Dialog anzeigen und die Auswahl ablegen
tempFarbe = JColorChooser.showDialog(this, "Bitte wählen Sie eine Farbe", Color.BLACK);
//wurde etwas ausgewählt?
//dann die Farbe neu setzen
if (tempFarbe != null)
mausPanel.farbeSetzen(tempFarbe);
}
}
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.swing.JPanel;
import javax.swing.border.BevelBorder;
public class MiniMalBildPanel extends JPanel {
//automatisch über Eclipse ergänzt
private static final long serialVersionUID = 4141971349064683906L;
//für das Bild
private BufferedImage bild;
//für die Farbe
private Color farbe;
//der Konstruktor
public MiniMalBildPanel() {
setSize(800,600);
//einen Rahmen zeichnen
setBorder(new BevelBorder(BevelBorder.LOWERED));
//ein neues Bild in der Größe des Panels erzeugen
//als Typ verwenden wir INT_RGB
bild = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_RGB);
//den Grafik-Kontext beschaffen
Graphics g = bild.getGraphics();
//ein weißes Rechteck in der Größe des Bildes zeichnen, damit der Hintergrund weiß ist
g.setColor(Color.WHITE);
g.fillRect(0, 0, getWidth(), getHeight());
//den Grafik-Kontext wieder freigeben
g.dispose();
//die Standard-Farbe ist Schwarz
farbe = Color.BLACK;
}
//die überladenen Methode zum Zeichnen der Komponente
@Override
public void paintComponent(Graphics g) {
//die Methode der übergeordneten Klasse aufrufen
super.paintComponent(g);
//das Bild zeichnen
g.drawImage(bild, 0, 0, this);
}
//die Methode zeichnet ein Rechteck
//die Koordinaten, Breite und Höhe werden als Parameter übergeben
public void rechteck(int x1, int y1, int breite, int hoehe) {
//den Grafik-Kontext beschaffen
Graphics g = bild.getGraphics();
//die Farbe setzen
g.setColor(farbe);
//die Figur zeichnen
g.drawRect(x1, y1, breite, hoehe);
//den Grafik-Kontext freigeben
g.dispose();
//das Neuzeichnen anfordern
repaint();
}
//die Methode zeichnet einen Kreis
//die Koordinaten, Breite und Höhe des umgebenden Rechtecks werden als Parameter übergeben
public void kreis(int x1, int y1, int breite, int hoehe) {
//siehe rechteck()
Graphics g = bild.getGraphics();
g.setColor(farbe);
g.drawOval(x1, y1, breite, hoehe);
g.dispose();
repaint();
}
//die Methode zeichnet eine Linie
//Start- und Endpunkt werden als Parameter übergeben
public void linie(int x1, int y1, int x2, int y2) {
//siehe rechteck()
Graphics g = bild.getGraphics();
g.setColor(farbe);
g.drawLine(x1, y1, x2, y2);
g.dispose();
repaint();
}
//die Farbe setzen
public void farbeSetzen(Color farbe) {
this.farbe = farbe;
}
}
[/code]
geht das mit meinem Programm überhaupt ? ???:L