kostenloser Webspace werbefrei: lima-city


String by Value - Vector

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    q*****4

    - Fehler bereits Gefunden -
    war eine nicht zugewiesene Variable.


    Hallo,

    ich Hoffe ihr könnt mir ein wenig weiter helfen, denn meine Code mach nicht was er soll.

    Klasse Theme
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.Vector;
    
    
    public class Theme {
    	private Vector<Game_Card> cards;
    	private int cardcount;
    	
    	public Vector<Game_Card>getcards(){
    		return cards;
    	}
    	
    	public Theme(){
    		cards = new Vector<Game_Card>();
    		cardcount=0;
    		read_theme(new File("sets/ravensburg1.set"));
    
    	}
    	
    	public void test(){
    		for (int i =0; i< cards.size(); i++){
    			System.out.println ("FILE: " + cards.get(i).getCard_front_filename() );
    		}
    	}
    
    	private void read_theme(File theme_file){
    		Vector<String> card_images = new Vector<String>();
    		String card_background ="";
    		String line="";
    		try {
    			BufferedReader br = new BufferedReader( new FileReader(theme_file));
    			while ((line = br.readLine())!= null){
    				if (line.substring(0,10).equalsIgnoreCase("CARD_FILE=")){
    					cardcount++;
    					System.out.println(line.substring(10).trim());
    					card_images.add(line.substring(10).trim());
    				}else if (line.substring(0,16).equalsIgnoreCase("CARD_BACKGROUND=")){
    					card_background = line.substring(16).trim();
    				}
    			}
    			br.close();
    		} catch (FileNotFoundException e) {
    			System.out.println("Datei konnte nicht gelesen werden.");
    			e.printStackTrace();
    		} catch (IOException e) {
    			System.out.println("Datei konnte nicht gelesen werden.");
    			e.printStackTrace();
    		}
    		
    		for (int i =0; i < card_images.size(); i++){
    			cards.add(new Game_Card(card_images.get(i).toString(), card_background));
    		}
    	}
    	
    	
    }


    Klasse Game Card
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.Image;
    import java.awt.RenderingHints;
    import java.awt.Toolkit;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.awt.image.ImageObserver;
    
    import javax.swing.JPanel;
    
    
    public class Game_Card extends JPanel {
    	private String card_front_filename;
    	private String card_back_filename;
    	private Image card_back;
    	private Image card_front;
    	private Image current_card_image;
    	private int card_state;   // 0 = invisible  1=card_back   2=card_front
    	private JPanel card_panel;
    	private int card_width;
    	private int card_height;
    	
    	public Game_Card(String card_front_path, String card_back_path){
    		this.card_state=1;
    		//this.setBackground(Color.RED);
    		card_width = 150;
    		card_height = 150;
    		card_back = Toolkit.getDefaultToolkit().getImage(card_back_path);
    		card_front = Toolkit.getDefaultToolkit().getImage(card_front_path);
    	}
    	
    	public void set_pos(int x, int y){
    		this.setBounds(x, y, card_width, card_height);
    	}
    	
    	public void update(Graphics g){
    		paint(g);
    	}
    	
    	public void paint(Graphics g){
    		super.paint(g);
    		if (card_state == 1){
    			this.current_card_image = this.card_back;
    			this.setVisible(true);
    		}else if (card_state == 2){
    			this.current_card_image = this.card_front;
    			this.setVisible(true);
    		}else{
    			this.setVisible(false);
    		}
    		draw_card(g, 0, 0, card_width, card_height, this, current_card_image);
    	}
    	
    	public void draw_card(Graphics g, int x, int y, int w, int h, ImageObserver imgob, Image img){
    		Graphics2D g2 = (Graphics2D)g;
    		RenderingHints xxx = new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
    		xxx.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
    		xxx.put(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
    		xxx.put(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY);
    		xxx.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    		g2.addRenderingHints(xxx);
    		g2.drawImage(img ,x, y, w, h,imgob);
    	}
    
    
    	
    	public String getCard_front_filename() {
    		return card_front_filename;
    	}
    	public String getCard_back_filename() {
    		return card_back_filename;
    	}
    	public Image getCard_back() {
    		return card_back;
    	}
    	public Image getCard_front() {
    		return card_front;
    	}
    	public int getCard_state() {
    		return card_state;
    	}
    	public void setCard_front_filename(String cardFrontFilename) {
    		card_front_filename = cardFrontFilename;
    	}
    	public void setCard_back_filename(String cardBackFilename) {
    		card_back_filename = cardBackFilename;
    	}
    	public void setCard_back(Image cardBack) {
    		card_back = cardBack;
    	}
    	public void setCard_front(Image cardFront) {
    		card_front = cardFront;
    	}
    	public void setCard_state(int cardState) {
    		card_state = cardState;
    		repaint();
    	}
    
    
    	
    }


    Wenn Ich eine Instanz der Klasse anlege wird eine Textdatei geparst und dann Objekte vom Typ Game_Card erzeugt.
    Rufe ich die Funktion test() auf, bekomme ich als Return null und nicht mehr den Dateinamen. Weiß jemand von euch warum das so ist, bzw. wie ich das beheben könnte ? Beim Lesen bekomme ich den Dateinamen noch richtig (System.out.println(line.substring(10).trim());)

    Beitrag zuletzt geändert: 30.7.2010 1:50:46 von qwertz4
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Tipp: benutz ArrayList aus java.util statt Vektor, Vektor ist veraltet.

  4. Der Fehler ist ganz Simpel: Du vergisst im Konstruktor der GameCard Klasse die Variable "card_front_filename" zu füllen. Somit bleibt diese Variable null. Hier die Korrektur:
    ...
    public Game_Card(String card_front_path, String card_back_path){
    		this.card_state=1;
    		//this.setBackground(Color.RED);
    		card_width = 150;
    		card_height = 150;
    		card_back = Toolkit.getDefaultToolkit().getImage(card_back_path);
    		card_front = Toolkit.getDefaultToolkit().getImage(card_front_path);
    
                    card_front_filename = card_front_path;
    	        card_back_filename = card_back_path;
    }
    ...


    Und um meinem Vorredner zuzustimmen: Verwende die ArrayList statt Vector. :wink:

    Grüße
    Daniel

    Beitrag zuletzt geändert: 16.8.2010 19:26:56 von hokigala
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!