Hallo Kollegen,
Ich muß eine Applikation umbauen zu einem Applet, habe ich auch gemacht. Nur leider die Bilder für die Symbole auf der Symbolleiste werden nicht korrekt angezeigt. Mann hat mir gesagt das ich die gif bilder in dem selben Ordner kopieren soll wo der Quelltext steht , habe ich auch gemacht klappt leider nicht . Bitte um hilfe !!!
[HIGHLIGHT="Java"]import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Image;
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.JApplet;
import javax.swing.JButton;
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 JApplet{
//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
@Override
public void init() {
//super(titel);
//wir nehmen ein Border-Layout
setLayout(new BorderLayout());
beendenAct = new MeineAktionen("Beenden", null, "", null, "beenden");
rectAct = new MeineAktionen("Rechteck" ,new ImageIcon("rect24.gif"), "Zeichnet ein Rechteck", null, "rechteck");
kreisAct = new MeineAktionen("Kreis", new ImageIcon("circle24.gif"), "Zeichnet einen Kreis", null, "kreis");
linieAct = new MeineAktionen("Linie", new ImageIcon("line24.gif"), "Zeichnet eine Linie", null, "linie");
farbeAct= new MeineAktionen("Farbauswahl", new ImageIcon("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);
}
}[/HIGHLIGHT]
Ich muß eine Applikation umbauen zu einem Applet, habe ich auch gemacht. Nur leider die Bilder für die Symbole auf der Symbolleiste werden nicht korrekt angezeigt. Mann hat mir gesagt das ich die gif bilder in dem selben Ordner kopieren soll wo der Quelltext steht , habe ich auch gemacht klappt leider nicht . Bitte um hilfe !!!
[HIGHLIGHT="Java"]import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Image;
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.JApplet;
import javax.swing.JButton;
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 JApplet{
//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
@Override
public void init() {
//super(titel);
//wir nehmen ein Border-Layout
setLayout(new BorderLayout());
beendenAct = new MeineAktionen("Beenden", null, "", null, "beenden");
rectAct = new MeineAktionen("Rechteck" ,new ImageIcon("rect24.gif"), "Zeichnet ein Rechteck", null, "rechteck");
kreisAct = new MeineAktionen("Kreis", new ImageIcon("circle24.gif"), "Zeichnet einen Kreis", null, "kreis");
linieAct = new MeineAktionen("Linie", new ImageIcon("line24.gif"), "Zeichnet eine Linie", null, "linie");
farbeAct= new MeineAktionen("Farbauswahl", new ImageIcon("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);
}
}[/HIGHLIGHT]
Zuletzt bearbeitet von einem Moderator: