Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Quellcode |
|
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 |
package Controls; import javax.swing.JPanel; import Logic.*; import java.awt.Graphics; import javax.swing.ImageIcon; public class GuessControl extends JPanel { //Variablen private int _PinCount; private Guess _guess; //Konstruktor public GuessControl(Guess guess) { //Variablen setzen _PinCount = guess.Pins().length; _guess = guess; } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); //Pins zeichnen for (int i = 0; i < _PinCount; i++) { g.drawImage(new ImageIcon(getClass().getResource("images/" + _guess.Pins()[i].getColor() + ".png")).getImage(), i * 64, 0, 64, 64, this); } } } |
Quellcode |
|
1 2 3 4 5 |
GuessControl gc = new GuessControl(gue); gc.setBounds(0, 0, 250, 75); gc.setLocation(0, 0); gc.setVisible(true); Background.add(gc); |
mal nach dem Hinzufuegen von gc auf - setVisible gehört immer ans Ende der Initialisierungsmethode.gc.setVisible(true);
Danke für die Antwort, aber leider keine Änderung. Es wird auch nichtmal ein Rahmen ohne Elemente oder so angezeigt, nichts, totaler Käse.Ruf das Sichtbar machen, alsomal nach dem Hinzufuegen von gc auf - setVisible gehört immer ans Ende der Initialisierungsmethode.gc.setVisible(true);
Alternativ kannst du auch die Methode validate() aufrufen, nachdem du neue Elemente hinzugefügt hast.
Werden neue Elemente hinzugefügt, musst du dem Fenster/Panel immer mitteilen, dass es neu gezeichnet werden muss, z.B. über validate.
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 |
protected void paintComponent(Graphics g) { super.paintComponent(g); //Pins zeichnen for (int i = 0; i < _PinCount; i++) { g.drawImage(new ImageIcon(getClass().getResource("images/2.png")).getImage(), i * 64, 0, 64, 64, this); } } |
C-/C++-Quelltext |
|
1 2 3 |
public ImageIcon (URL location) { this(location, location.toExternalForm()); } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 |
@Override protected void paintComponent(Graphics g) { super.paintComponent(g); //Pins zeichnen for (int i = 0; i < _PinCount; i++) { g.drawImage(new ImageIcon(getClass().getResource("images/2.png")).getImage(), i * 64, 0, 64, 64, this); } } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 |
GuessControl gc = new GuessControl(gue); gc.setBounds(0, 0, 250, 75); gc.setLocation(20, 20); JFrame frame = new JFrame(); frame.setBounds(0, 0, 300, 400); frame.setLocation(0, 0); frame.setVisible(true); frame.validate(); frame.add(gc); |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Affje« (20.11.2011, 18:25)
Jetzt rufst du sowohl setvisible als auch validate vor dem add-Aufruf auf ... korrigier das bitte.
Warum baust du jetzt einen neuen Frame? Poste bitte mal deine gesamte Main-Methode einschließlich Methodenkopf.
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
public class GameFrame extends JFrame { /** Creates new form GameFrame */ public GameFrame(int pins, int colors) { //Variablen setzen _pinCount = pins; _colors = colors; initComponents(); this.setLayout(null); this.setBounds(0, 0, 1000, 700); this.setDefaultCloseOperation(0); this.setLocationRelativeTo(null); //Allgemeine Variablen initialisieren _game = new Game(pins, colors, 12); //Komponenten zeichnen GetComponents(); } |
Dass das die NullPointerException behebt, war auch nicht zu erwarten. Du solltest das trotzdem immer so aufbauen.Jetzt rufst du sowohl setvisible als auch validate vor dem add-Aufruf auf ... korrigier das bitte.
Warum baust du jetzt einen neuen Frame? Poste bitte mal deine gesamte Main-Methode einschließlich Methodenkopf.
Keine Änderung wenn ich das setVisible() und validate() danach einbaue.
Dass das die NullPointerException behebt, war auch nicht zu erwarten. Du solltest das trotzdem immer so aufbauen.Jetzt rufst du sowohl setvisible als auch validate vor dem add-Aufruf auf ... korrigier das bitte.
Warum baust du jetzt einen neuen Frame? Poste bitte mal deine gesamte Main-Methode einschließlich Methodenkopf.
Keine Änderung wenn ich das setVisible() und validate() danach einbaue.
Und du hast deine Main-Methode immer noch nicht gepostet.
C-/C++-Quelltext |
|
1 2 3 4 5 |
public static void main(String[] args) throws IOException { Main main = new Main(); main.setVisible(true); main.setTitle("'MasterMind'"); } |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Affje« (20.11.2011, 19:02)
Bitte sei konkreter. WAS hast du genauso gemacht und WAS hat geklappt? Die NullPointerException mag im JPanel-Konstruktor entstehen, aber verursacht wird sie an irgendeiner Stelle von deinem Code (Was du über den Stacktrace verfolgen kannst).Ich hab da sbei nem anderen Control genauso gemacht, allerdings ohne Image und da hats geklappt.
Werbeanzeige