Einen guten Abend erstmal...
Also als erste hier gibs die Cods und class Dateien zu laden: Download
Es dreht sich mal wieder um mein Auto, was einigen hier schon bekannt sein dürfte ^^
ich hab es ein bisschen erweitert, umgeschrieben, kommentiert usw. aber jetzt bin ich mal wieder an einem Punkt, an dem ich mal wieder nicht ohne eure hilfe weiterkomme, eigentlich habe ich mehrer Fragen...
Fange ich doch mal mit der Grafik/Java2D an XD...
also... ich habe hier meine Classe Fenster:
Jetzt gehts es darum:
Ich weis nicht so ganz wie ich die methode aufrufen soll... ich habs vorher mit Graphics g gemacht, da hat er das Rechteck von alleine gezeichnet. Ich hatte damit nur ein "par" Probleme. Es wurde alles überschrieben also die Textstrings und die Menüleiste oben, ich habe mir gedacht ok setzte ich das ganze in ein Pannel(ich weis net obs Funktioniert), aber dabei ist es auch wieder beim aufrufen gescheitert XD Und ich würde gerne die paint Methode in eine seperate classe schreiben aber wie soll ich die dann wieder aufrufen das das Auto auch im Fenster gezeichnet wird?
Wie bereits gesagt als ich das ganze mit Graphics g gemacht habe, hat er das Rechteck gezeichnet, dann konnte ich mit der Classe FensterAutoSetup die Einstellungen meines Autos ändern, wenn man die größe geändert hat, wurde auch das Rechteck größer bzw. kleiner, aber wenn man die Farbe geändert hat, wurde die Farbe nicht geändert. Warum? oO
FensterAutoSetup:
2. Kann mir auch bitte jemand sagen wo ich ne Tutorial zum drehen von Rechtecken herbekomme^^ wäre sehr Freundlich....
3. Wo finde ich eine schöne Datenbanktutorial wo erklärt steht wie ich neue Datensätze schreibe, oder wie ich eine Eingabe mit einer Datenbank vergleiche. (Datei DatenBankThreat)
4. was kann ich an der Stillistik des Codes ändern, oder ist das soweit ok?
5.Gibt es eine möglichkeit aus der Applikation eine "Standalone-Datei" zu machen, also so eine Art .exe?
Wäre euch sehr verbunden für eure Hilfe
mfg. Dagobert
Also als erste hier gibs die Cods und class Dateien zu laden: Download
Es dreht sich mal wieder um mein Auto, was einigen hier schon bekannt sein dürfte ^^
ich hab es ein bisschen erweitert, umgeschrieben, kommentiert usw. aber jetzt bin ich mal wieder an einem Punkt, an dem ich mal wieder nicht ohne eure hilfe weiterkomme, eigentlich habe ich mehrer Fragen...
Fange ich doch mal mit der Grafik/Java2D an XD...
also... ich habe hier meine Classe Fenster:
Code:
package Auto3;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Fenster extends JFrame {
// Instanzvariablen
Auto auto;
FensterAutoSetup fensterAutoSetup;
FensterUeber fensterUeber;
// Bestandteile der Menüleiste
JMenuBar menue;
JMenu menueDatei;
JMenu menueAuto;
JMenu menueAnsicht;
JMenu menueInfo;
JMenuItem itemBeenden;
JMenuItem itemAutoSetup;
JMenuItem itemUeber;
JMenuItem itemkontackt;
JLabel geschw;
JLabel richtung;
JProgressBar pbSchaden;
JPanel pgrafik;
// Methode Fenster
public Fenster(Auto auto) {
this.auto = auto;
// Menü-Leiste erstellen
menue = new JMenuBar();
// Submenüs erstellen
menueDatei = new JMenu("Datei");
menueAuto = new JMenu("Auto");
menueAnsicht = new JMenu("Ansicht");
menueInfo = new JMenu("Info");
// Items erstellen
itemBeenden = new JMenuItem("Beenden");
itemBeenden.addActionListener(new menue());
itemAutoSetup = new JMenuItem("Auto Setup");
itemAutoSetup.addActionListener(new menue());
itemUeber = new JMenuItem("Über");
itemUeber.addActionListener(new menue());
itemkontackt = new JMenuItem("Kontackt");
itemkontackt.addActionListener(new menue());
// Items in Submenüs einfügen
menueDatei.add(itemBeenden);
menueAuto.add(itemAutoSetup);
menueInfo.add(itemUeber);
menueInfo.add(itemkontackt);
// Submenüs in Hauptmenü einfügen
menue.add(menueDatei);
menue.add(menueAuto);
menue.add(menueAnsicht);
menue.add(menueInfo);
// Menü ins Fenster setzen
this.setJMenuBar(menue);
// Die Label geschw und richtung werden erstellt
geschw = new JLabel();
geschw.setBounds(425, 208, 85, 20);
this.add(geschw);
richtung = new JLabel();
richtung.setBounds(10, 5, 30, 20);
this.add(richtung);
// Layoutmanager
this.setLayout(null);
// Fenstergröße
this.setSize(500, 300);
// Die Mitte vom Bildschirm berechnen und dort das Fenster anzeigen
// lassen
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation((d.width - getSize().width) / 2,
(d.height - getSize().height) / 2);
// Die Labels werden ins Null-Layout einfügen und die Positionen werden
// festgelegt
// Anfangswerte werden ins gesch & richutng geschrieben
this.geschw
.setText(String.valueOf(auto.getGeschwindigkeit()) + " Km/h");
this.richtung.setText(String.valueOf(auto.getRichtung()) + " °");
// ProgressBar mit Schaden
pbSchaden = new JProgressBar(0, 100);
pbSchaden.setValue(auto.getSchaden());
pbSchaden.setSize(10, 10);
pbSchaden.setStringPainted(true);
pbSchaden.setString("Schaden: " + String.valueOf(auto.getSchaden()));
pbSchaden.setBounds(415, 225, 85, 20);
this.add(pbSchaden);
// Program bei klicken auf Kreuz zum schließen bringen
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Größe nicht veränderbar
this.setResizable(false);
// Panel für Grafik erstellen
pgrafik = new JPanel();
pgrafik.setBounds(200, 100, 100, 100);
// Fenster sichbar machen
this.setVisible(true);
}
public void paint(Graphics2D g2d) {
g2d.setColor(Color.getColor(String.valueOf(auto.getFarbe())));
g2d.fillRect(200, 100, ((int) auto.getBreite() * 20), ((int) auto
.getLaenge()) * 20);
}
// Action Event für den Knopf
class menue implements ActionListener {
public void actionPerformed(ActionEvent MENUE) {
// Funktion für Knopf
// wenn auf Beenden geklick wird, dann verlasse programm
if (MENUE.getActionCommand() == itemBeenden.getText()) {
System.exit(0);
}
if (MENUE.getActionCommand() == itemAutoSetup.getText()) {
fensterAutoSetup = new FensterAutoSetup(auto);
}
if (MENUE.getActionCommand() == itemUeber.getText()) {
fensterUeber = new FensterUeber();
}
if (MENUE.getActionCommand() == itemkontackt.getText()) {
FensterKontackt FensterKontackt = new FensterKontackt();
}
}
}
}
Jetzt gehts es darum:
Code:
public void paint(Graphics2D g2d) {
g2d.setColor(Color.getColor(String.valueOf(auto.getFarbe())));
g2d.fillRect(200, 100, ((int) auto.getBreite() * 20), ((int) auto
.getLaenge()) * 20);
Ich weis nicht so ganz wie ich die methode aufrufen soll... ich habs vorher mit Graphics g gemacht, da hat er das Rechteck von alleine gezeichnet. Ich hatte damit nur ein "par" Probleme. Es wurde alles überschrieben also die Textstrings und die Menüleiste oben, ich habe mir gedacht ok setzte ich das ganze in ein Pannel(ich weis net obs Funktioniert), aber dabei ist es auch wieder beim aufrufen gescheitert XD Und ich würde gerne die paint Methode in eine seperate classe schreiben aber wie soll ich die dann wieder aufrufen das das Auto auch im Fenster gezeichnet wird?
Wie bereits gesagt als ich das ganze mit Graphics g gemacht habe, hat er das Rechteck gezeichnet, dann konnte ich mit der Classe FensterAutoSetup die Einstellungen meines Autos ändern, wenn man die größe geändert hat, wurde auch das Rechteck größer bzw. kleiner, aber wenn man die Farbe geändert hat, wurde die Farbe nicht geändert. Warum? oO
FensterAutoSetup:
Code:
package Auto3;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class FensterAutoSetup extends JFrame {
Auto auto;
private JLabel lLaenge;
private JLabel lBreite;
private JTextField tLaenge;
private JTextField tBreite;
private JLabel lFarbe;
private JTextField tFarbe;
private JLabel lMaximalGeschwindigkeit;
private JTextField tMaximalGeschwindigkeit;
private JLabel lNullAufHundert;
private JTextField tNullAufHundert;
private JLabel lPs;
private JTextField tPs;
private JLabel lAirbag;
private JLabel lAirbagAnzahl;
private JTextField tAirbag;
private JCheckBox cAirbag;
private JLabel lEsp;
private JCheckBox cEsp;
private JLabel lCabrio;
private JCheckBox cCabrio;
private JButton ok;
FensterAutoSetup(Auto auto) {
this.auto = auto;
// Fenstersetup
this.setTitle("Auto Setup");
this.setSize(200, 300);
this.setLayout(null);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation((d.width - getSize().width) / 2,
(d.height - getSize().height) / 2);
// Größe des Autos ändern ändern
lBreite = new JLabel("Breite :");
lLaenge = new JLabel("Länge :");
tBreite = new JTextField(String.valueOf(auto.getBreite()));
tLaenge = new JTextField(String.valueOf(auto.getLaenge()));
this.lBreite.setBounds(10, 10, 50, 20);
this.lLaenge.setBounds(70, 10, 50, 20);
this.tBreite.setBounds(10, 30, 50, 20);
this.tLaenge.setBounds(70, 30, 50, 20);
this.add(this.lBreite);
this.add(this.lLaenge);
this.add(this.tBreite);
this.add(this.tLaenge);
// Menü Frabe des Autos verändern
lFarbe = new JLabel("Farbe: ");
tFarbe = new JTextField(auto.getFarbe());
this.lFarbe.setBounds(130, 10, 50, 20);
this.tFarbe.setBounds(130, 30, 50, 20);
this.add(lFarbe);
this.add(tFarbe);
// Werte für Geschwindigkeit verändern
this.lMaximalGeschwindigkeit = new JLabel("Maximalgeschwindigkeit: ");
this.tMaximalGeschwindigkeit = new JTextField(String.valueOf(auto
.getMaximalGeschwindigkeit()));
this.lMaximalGeschwindigkeit.setBounds(10, 50, 150, 20);
this.tMaximalGeschwindigkeit.setBounds(10, 70, 50, 20);
this.add(lMaximalGeschwindigkeit);
this.add(tMaximalGeschwindigkeit);
this.lNullAufHundert = new JLabel("Null auf Hundert:");
this.tNullAufHundert = new JTextField(String.valueOf(auto
.getNullAufHundert()));
this.lNullAufHundert.setBounds(10, 90, 100, 20);
this.tNullAufHundert.setBounds(10, 110, 50, 20);
this.add(lNullAufHundert);
this.add(tNullAufHundert);
lPs = new JLabel("PS:");
tPs = new JTextField(String.valueOf(auto.getPs()));
this.lPs.setBounds(140, 90, 20, 20);
this.tPs.setBounds(140, 110, 30, 20);
this.add(this.lPs);
this.add(this.tPs);
// Airbag
lAirbag = new JLabel("Airbag :");
this.lAirbagAnzahl = new JLabel("Anzahl:");
this.lAirbagAnzahl.setVisible(false);
tAirbag = new JTextField();
this.tAirbag.setVisible(false);
cAirbag = new JCheckBox();
this.cAirbag.addItemListener(itemListener);
this.cAirbag.setSelected(auto.getAirbag());
this.lAirbag.setBounds(10, 130, 50, 20);
this.lAirbagAnzahl.setBounds(100, 130, 100, 20);
this.tAirbag.setBounds(150, 130, 15, 20);
this.cAirbag.setBounds(55, 130, 20, 20);
this.add(this.lAirbag);
this.add(this.lAirbagAnzahl);
this.add(this.tAirbag);
this.add(this.cAirbag);
lEsp = new JLabel("EPS:");
cEsp = new JCheckBox();
this.cEsp.addItemListener(itemListener);
this.cEsp.setSelected(auto.getEsp());
this.lEsp.setBounds(10, 150, 30, 20);
this.cEsp.setBounds(35, 150, 20, 20);
this.add(this.lEsp);
this.add(this.cEsp);
lCabrio = new JLabel("Cabrio: ");
cCabrio = new JCheckBox();
this.cCabrio.addItemListener(itemListener);
this.cCabrio.setSelected(auto.getCabrio());
this.lCabrio.setBounds(100, 150, 50, 20);
this.cCabrio.setBounds(145, 150, 20, 20);
this.add(this.lCabrio);
this.add(this.cCabrio);
// Button
ok = new JButton("Übernehmen");
this.ok.addActionListener(new knopf());
this.ok.setBounds(5, 240, 110, 20);
this.add(this.ok);
// Größe nicht veränderbar
this.setResizable(false);
// Fenster sichtbar machen
this.setVisible(true);
}
// Klasse zum schließen des Fenster
public void fensterschließen() {
// Fenster wird unsichbar gemacht
this.setVisible(false);
// Fenster wird zerstört
this.dispose();
}
ItemListener itemListener = new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if (cAirbag.isSelected()) {
lAirbagAnzahl.setVisible(true);
tAirbag.setVisible(true);
tAirbag.setText(String.valueOf(auto.getAirbagAnzahl()));
}
if (!cAirbag.isSelected()) {
tAirbag.setText("0");
lAirbagAnzahl.setVisible(false);
tAirbag.setVisible(false);
}
}
};
// Action Event für den Knopf
class knopf implements ActionListener {
public void actionPerformed(ActionEvent e) {
// Funktion für Knopf
if (e.getActionCommand() == ok.getText()) {
auto.setBreite(String.valueOf(tBreite.getText()));
auto.setLaenge(String.valueOf(tLaenge.getText()));
auto.setFarbe(tFarbe.getText());
auto.setMaximalGeschwindigkeit(String
.valueOf(tMaximalGeschwindigkeit.getText()));
auto.setNullAufHundert(Double.parseDouble(tNullAufHundert
.getText()));
auto.setPs(Integer.parseInt(tPs.getText()));
if (cAirbag.isSelected()) {
auto.setAirbag(true);
auto.setAirbagAnzahl(Integer.parseInt(tAirbag.getText()));
} else {
auto.setAirbagAnzahl(0);
auto.setAirbag(false);
}
if (cEsp.isSelected()) {
auto.setEsp(true);
}
fensterschließen();
}
}
}
}
2. Kann mir auch bitte jemand sagen wo ich ne Tutorial zum drehen von Rechtecken herbekomme^^ wäre sehr Freundlich....
3. Wo finde ich eine schöne Datenbanktutorial wo erklärt steht wie ich neue Datensätze schreibe, oder wie ich eine Eingabe mit einer Datenbank vergleiche. (Datei DatenBankThreat)
4. was kann ich an der Stillistik des Codes ändern, oder ist das soweit ok?
5.Gibt es eine möglichkeit aus der Applikation eine "Standalone-Datei" zu machen, also so eine Art .exe?
Wäre euch sehr verbunden für eure Hilfe
mfg. Dagobert