ERLEDIGT
NEIN
NEIN
ANTWORTEN
15
15
ZUGRIFFE
1452
1452
EMPFEHLEN
-
Moin an alle,
ich hoffe ich find hier ein Paar, die einem Anfänger der objektorientierten Programmierung weiterhelfen können.
Bevor ich aber zu meiner Frage komme, erst einmal, was ich überhaupt vor habe zu programmieren:
Ich will ein Prog mit grafischer Benutzeroberfläche erstellen, mit der ich in ganz Deutschland, Österreich und der Schweiz die Skigebiete mit den dazugehörigen Infomationen, wie z.B. Bild, Öffnungszeiten, etc. auslesen kann.
Mit dem Schulwissen komm ich nur bis zu einem gewissen Punkt, doch mein erstes Problem ist:
Ich habe mit Hilfe von Photoshop ein Bild erstellt. Dieses Bild (.jpg) würde ich gern als Hintergrundbild für meine GUI verwenden. Bevor ich mit der Programmierung beginne, würd ich gerne wissen, ob ich eine zusätzliche Class erstellen muss, oder ob ich das Bild mit angabe des Pfades und einer bestimmten Methode in meiner Klasse für die GUI (die sich dann "Hauptfenster" nennt) aufrufen kann?
Ich hoffe, Ihr habt mein Problem verstanden und könnt mir im vorraus helfen, ansonsten beginne ich heute mit meinem Projekt und fragen dann noch einmal...
Mit freundlichen greez
merTii
-
Ich will echt nicht unhöfflich wirken, aber über irgendein Zeichen wäre ich sehr erfreut
-
Macht euch keine Mühe
...ich hab mein Problem selber gelöst.
Trotzdem danke für die 31 Clicks
-
Dann sei doch bitte so freundlich und helfe anderen (Anfängern) die das gleiche Problem haben dieses zu lösen und poste deine Lösung
-
Oh klar, tut mir leid bin heute um 2:00 Uhr in der Nacht drauf gekommen

Im Prinzip ist das ja gar nicht schwer...
Die GUI erstellen, ein JLabel aufziehen und dann folgendes:
Code :1 2 3 4
Image image = Toolkit.getDefaultToolkit().createImage("Pfad"); btBild = new JLabel(new ImageIcon(image)); btBild.setBounds(new Rectangle(2, 2, 699, 434)); btBild.setText("JLabel");
Die relevanten Zeilen sind die erste und zweite
-
Ich hab noch eine weitere Frage, hoff ich kann sie auch hier stellen...und zwar habe ich nun ein Bild als Hintergrund, worauf zwei Buttons erscheinen sollten, aber wenn ich mein Prog ausführe, so erscheinen meine Buttons nur, wenn ich mit der Maus drüber fahre...könnt ihr mir da helfen`?
-
02.01.11 10:32 #7
Dafür wirst du schon den Code posten müssen

EDIT:
Hab mal spaßeshalber was zusammengekloppt, das ein Hintergrundbild zeichnet und zwei Buttons hinzufügt, also eigentlich das, was du gemacht hast (hatte grad eh nix zu tun). Funktioniert so wie es soll. Hier mal der Code, Kommentare sind drin.
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
package de.tutorials.forum.hilfe.mertii.bgimage; import java.awt.Graphics; import java.awt.Image; import java.awt.MediaTracker; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; /** * Diese Klasse zeichnet ein Hintergrundbild und fügt zwei Buttons hinzu. * * @author Akeshihiro */ public class BgImageSample extends JFrame { /** * Versionkennung für die Serialisierung. */ private static final long serialVersionUID = 3633606108685196952L; /** * Main-Methode. * * @param args * Programmparameter. */ public static void main(String[] args) { new BgImageSample(); } /** * Default-Konstruktor. */ public BgImageSample() { initSettings(); initComponents(); initGui(); } /** * Initialisiert die Komponenten, die im Fenster zu sehn sein sollen. */ private void initComponents() { /* * Neue ContentPane setzen, die das Hintergrundbild zeichnet. Hier zu * Vorzeigezwecken alles in einem Schritt reingeklatscht, sollte im * Normalfall sauberer implementiert werden. */ setContentPane(new JPanel() { /** * Versionskennung für die Serialisierung. */ private static final long serialVersionUID = 366410619231078381L; /** * Das Hintergrundbild. */ private Image img; /* * Da es sich hierbei um eine anonyme Klasse handelt, kann ich * keinen expliziten Konstruktor deklarieren, daher wird das Bild in * einem Initialisierer geladen. */ { img = getToolkit().createImage("C:/bild.jpg"); MediaTracker mt = new MediaTracker(this); mt.addImage(img, 1); try { mt.waitForAll(); } catch(InterruptedException e) { e.printStackTrace(); } } /* * (non-Javadoc) * @see javax.swing.JComponent#paintComponent(java.awt.Graphics) */ @Override protected void paintComponent(Graphics g) { g.drawImage(img, 0, 0, getWidth(), getHeight(), this); } }); // Zwei Buttons hinzufügen getContentPane().add(new JButton("bt1")); getContentPane().add(new JButton("bt2")); } /** * Größe und Position festlegen und sichtbar machen. */ private void initGui() { setSize(500, 500); setLocationRelativeTo(null); setVisible(true); } /** * Setzt ein paar grobe Einstellungen. */ private void initSettings() { setTitle(getClass().getName()); setDefaultCloseOperation(EXIT_ON_CLOSE); // Das Metal-LAF sieht beknackt aus, lieber das Systemeigene LAF nehmen try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch(ClassNotFoundException e) { e.printStackTrace(); } catch(InstantiationException e) { e.printStackTrace(); } catch(IllegalAccessException e) { e.printStackTrace(); } catch(UnsupportedLookAndFeelException e) { e.printStackTrace(); } } }
Geändert von Akeshihiro (02.01.11 um 11:17 Uhr)
Man sagt, das Schwert eines Samurai sei seine Seele ...
Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.
Das Schmieden ist eine Kunst; Das Schreiben auch ;)
-
Aus Gründen der Übersicht poste ich nur mal den Teil für meinen Button:
Code :1 2 3 4 5 6 7 8 9 10 11 12
private JButton getBtRegistrieren() { if (btRegistrieren == null) { btRegistrieren = new JButton(); btRegistrieren.setBounds(new Rectangle(267,352, 158,37)); btRegistrieren.setText("Registrieren"); btRegistrieren.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { System.out.println("actionPerformed()"); ; }
Falls es mehr nötig ist, kann ich auch mehr posten...
Ich denke wichtig ist " setVisible(true)"...die Frage ist nur wo ich dies Einfügen muss?
-
02.01.11 15:31 #9
das setVisible() kannste bei Komponenten weglassen, die sind üblicherweise sichtbar, sobald man sie hinzufügt. Die Frage ist eher wie und wann du deine Buttons hinzufügst.
Man sagt, das Schwert eines Samurai sei seine Seele ...
Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.
Das Schmieden ist eine Kunst; Das Schreiben auch ;)
-
Okay, dann poste ich mal meine gesamte Klasse:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
package paket1; import javax.swing.SwingUtilities; import java.awt.BorderLayout; import java.awt.Image; import java.awt.Toolkit; import javax.swing.ImageIcon; import javax.swing.JPanel; import javax.swing.JFrame; import java.awt.Dimension; import javax.swing.JLabel; import java.awt.Rectangle; import javax.swing.JButton; import java.awt.Point; public class Hauptfenster extends JFrame { private static final long serialVersionUID = 1L; private JPanel jContentPane = null; private JLabel btBild = null; private JButton btAnmelden = null; private JButton btRegistrieren = null; /** * This method initializes btAnmelden * * @return javax.swing.JButton */ private JButton getBtAnmelden() { if (btAnmelden == null) { btAnmelden = new JButton(); btAnmelden.setBounds(new Rectangle(267, 296, 158, 37)); btAnmelden.setText("Anmelden"); btAnmelden.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed() } }); } return btAnmelden; } /** * This method initializes btRegistrieren * * @return javax.swing.JButton */ private JButton getBtRegistrieren() { if (btRegistrieren == null) { btRegistrieren = new JButton(); btRegistrieren.setBounds(new Rectangle(267,352, 158,37)); btRegistrieren.setText("Registrieren"); btRegistrieren.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { System.out.println("actionPerformed()"); ; // TODO Auto-generated Event stub actionPerformed() } }); } return btRegistrieren; } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub SwingUtilities.invokeLater(new Runnable() { public void run() { Hauptfenster thisClass = new Hauptfenster(); thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); thisClass.setVisible(true); } }); } /** * This is the default constructor */ public Hauptfenster() { super(); initialize(); } /** * This method initializes this * * @return void */ private void initialize() { this.setSize(699, 479); this.setContentPane(getJContentPane()); this.setTitle("iSnow - Alle Skigebiete auf einen Blick"); } /** * This method initializes jContentPane * * @return javax.swing.JPanel */ private JPanel getJContentPane() { if (jContentPane == null) { Image image = Toolkit.getDefaultToolkit().createImage("C:/Users/Efe/Documents/Mert/GFS/Background.jpg"); btBild = new JLabel(new ImageIcon(image)); btBild.setBounds(new Rectangle(2, 2, 699, 434)); btBild.setText("JLabel"); jContentPane = new JPanel(); jContentPane.setLayout(null); jContentPane.add(btBild, null); jContentPane.add(getBtAnmelden(), null); jContentPane.add(getBtRegistrieren(), null); } return jContentPane; } } // @jve:decl-index=0:visual-constraint="10,10"
-
02.01.11 15:47 #11
Tatsache, das sieht wirklich komisch aus. Aber du fügst deinen "Hintergrund" auch als Label ein, wahrscheinlich wird versucht diese auch ganz normal darzustellen. Ich würde den Hintergrund lieber wirklich im Hintergrund zeichnen (so wie ich das gemacht hab) anstatt es als Komponente einzufügen.
Man sagt, das Schwert eines Samurai sei seine Seele ...
Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.
Das Schmieden ist eine Kunst; Das Schreiben auch ;)
-
Okay ich versuchs so zu machen, wie du es auch gemacht hast...
Kannst du mir sagen, mit welchem Tool du deine GUI erstellst...ich denk, du tippst ja wohl nicht alles einzelne.
-
Aber gibt es vllt auch eine Lösung für meine Vorgehensweise?
-
02.01.11 16:05 #14
Ich hab ne Möglichkeit gefunden, dein Problem zu lösen, aber meiner Meinung nach is das auch nich so der Hit ... Man kann nämlich den Z-Index bestimmen. Oder anders gesagt, man kann die Reihenfolge der Komponenten bestimmen, quasi als ob sie auf verschiedenen Ebenen liegen würden (so wie in Photoshop, falls das fürs Verständnis besser ist).
Dazu änderst du in der Methode getJContentPane() einfach etwas ab. Und zwar
gegenCode java:1 2 3
jContentPane.add(btBild, null); jContentPane.add(getBtAnmelden(), null); jContentPane.add(getBtRegistrieren(), null);
Also einfach nur null gegen 0 ersetzen. Hier würde es schon reichen das nur beim getBtRegistrieren() zu machen, aber sicherheitshalber hab ich das bei den anderen Komponenten hinzugefügt.Code java:1 2 3
jContentPane.add(btBild, 0); jContentPane.add(getBtAnmelden(), 0); jContentPane.add(getBtRegistrieren(), 0);
Also wenn ich mir den Code anschaue, dann nutzt die wohl Eclipse. Das nutze ich auch, aber ohne irgendwelche visuellen Editoren, wie z.B. VE. Am Anfang hab ich das noch gemacht, bis mir das Teil auf die Nerven ging, weil der Code immer aussah wie sonst was und seit dem tippe ich das alles von Hand. Son VE ist zwar ganz nett, vor allem wenn man was ändern will, aber man braucht ihn nicht. Abgesehn davon ordnest du damit ja nur paar Komponenten an, die Logik musst du ja dennoch selbst machen und dazu gehört auch das Zeichnen.Man sagt, das Schwert eines Samurai sei seine Seele ...
Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.
Das Schmieden ist eine Kunst; Das Schreiben auch ;)
-
Okay super es funktioniert...danke! Ich find das als JLabel einen tick besser, weil die Qualität einfach besser ist.
Jap benutze auch Eclipse, aber hab mir auch vorgenommen, viele Teile per Hand abzutippen, weil es ja mal vorkommen kann, dass kein Tool vorhanden ist, was mir alles vorsagt
Ähnliche Themen
-
Bild als Hintergrund
Von Sascha1122 im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 2Letzter Beitrag: 19.05.09, 17:51 -
Bild als Hintergrund
Von ivory-martin im Forum CSSAntworten: 2Letzter Beitrag: 22.10.07, 19:35 -
Hintergrund Bild
Von FlyingBall im Forum CSSAntworten: 3Letzter Beitrag: 09.07.07, 11:51 -
Hintergrund bild
Von ArneZ im Forum Cinema 4DAntworten: 2Letzter Beitrag: 07.12.06, 12:59 -
Über ein Hintergrund Bild ein Bild legen
Von Orphelina im Forum CSSAntworten: 21Letzter Beitrag: 31.03.05, 09:27





Zitieren
Login





