Hashmap :(

Status
Nicht offen für weitere Antworten.

Schandro

Top Contributor
:\ immer dazuschreiben WAS er falsch macht, nicht nur DAS er etwas falsch macht.

Der wahrscheinliche Fehler: Es werden keine Ordner angezeigt.
Das leigt dadran, dass du im FileFilter keine Ordner akzeptierst
Schreibs so:
Java:
	public boolean accept(File file) {
    return file.getName().toLowerCase().endsWith(".txt") || file.isDirectory();
}
 

AA

Aktives Mitglied
:\ immer dazuschreiben WAS er falsch macht, nicht nur DAS er etwas falsch macht.

Der wahrscheinliche Fehler: Es werden keine Ordner angezeigt.
Das leigt dadran, dass du im FileFilter keine Ordner akzeptierst
Schreibs so:
Java:
	public boolean accept(File file) {
    return file.getName().toLowerCase().endsWith(".txt") || file.isDirectory();
}
hallo Schandro,
danke für dein Antwort,
so funktioniert genau so wie davor plus dass die Ordners auch gezeigt werden .
Ich möchte aber dass es automatik .txt am endegeschriben wird dass es als txt gespeichert wird, so wird es ohne Endung gespeichert.
MFG
AA
 

Schandro

Top Contributor
damit hat der JFileChooser nichts zu tun.
Du musst den File den du vom JFileChooser zurückbekommst, nachträglich verändern
(einfache if Abfrage ob er bereits mit ".txt" endet, ansonsten dranhängen)
 

AA

Aktives Mitglied
Java:
public boolean accept(File pathname) {
                if (pathname.getName().toLowerCase().endsWith(".txt")) {
                    return true;
                } else {
                    return false;
                }
            }
habe ich doch hier gemacnt muss dann ein exception schmeißen oder ?
 

Schandro

Top Contributor
Nein. dein FileFilter hat mit dem File den der User aussucht nichts zu tun.

habe ich doch hier gemacnt muss dann ein exception schmeißen oder ?
^^ warum sollte da eine Exception geschmissen werden?? Das macht mal absolut keinen Sinn


Achso: Zurzeit erstellst du bei jedem aufruf von actionPerformed den JFileChooser neu, das ist EXTREM Performancefressend. Mach den JFileChooser zu ner Membervariable und initialisiere ihn per lazy initialization.
 
Zuletzt bearbeitet:

AA

Aktives Mitglied
Achso: Zurzeit erstellst du bei jedem aufruf von actionPerformed den JFileChooser neu, das ist EXTREM Performancefressend. Mach den JFileChooser zu ner Membervariable und initialisiere ihn per lazy initialization.
sorry aber ich verstehe nicht was du meinst:(
ich habe gedacht ein Exception dass der Benutzer ne meldung bekommt dass er .txt eingeben soll oder am besten dass es selber automatisch .txt schreibt dann brauche ich kein Exception


Danke
 

Schandro

Top Contributor
Ich zitiere mich mal selber:
Du musst den File den du vom JFileChooser zurückbekommst, nachträglich verändern
(einfache if Abfrage ob er bereits mit ".txt" endet, ansonsten dranhängen)

Den JFileChooser ansich kannst du nicht verändern.


€dit:
Bin mir grade nicht so sicher ob der Benutzer wirklich den Speicherort angeben soll.
Wenn's darum geht, dass der Benutzer en File auswählen soll der dann vom Programm geladen wird:
Bau ne Abfrage ein ob der File, der der Benutzer ausgewählt hat deinen Vorstellungen entspricht. Wenn nicht öffnest du den JFileChooser eben nochmal oder du machst mit der Klasse JOptionPane ne kleine Meldung für den Benutzer.
Das natürlcih alles nachdem der JFileChooser wieder geschlossen ist, während der JFileChooser offen ist kannst du nichts machen.
 
Zuletzt bearbeitet:

AA

Aktives Mitglied
also da hast du Recht, dasfür ist eigentlich für Server gedacgt dass die Daten dort von txt datei gelesen wird. es geht nicht darum wo es gespeichert wird sondern in txt format gespeichert wird

MFG AA
 

Schandro

Top Contributor
Bilder z.b. von der Festplatte zu laden geht mit
ImageIO.read
am besten, dann brauchst du auch keine externe Bibliothek

bin aber grade nicht sicher ob du das mit "bildhochladen" meinst.
 

AA

Aktives Mitglied
genau das mein ich, dass man von seinen Rechner bild hochaldet und als hintergrund auf diese fläche hat.
bin dabei so zu machen dass mit filechooser gewählt wird und dann gleich getimage setzen oder ist es blödsinn?
Java:
JFileChooser fileChooser1 = new JFileChooser();
               fileChooser1.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
               int returnVal = fileChooser1.showOpenDialog((Component) evt.getSource());

               if (returnVal == JFileChooser.APPROVE_OPTION) {
                   // block oder Statement
            try {
                File file = fileChooser1.getSelectedFile();
                Image image = null;
                image = ImageIO.read(file);
            } catch (IOException ex) {
                Logger.getLogger(EditorFrame.class.getName()).log(Level.SEVERE, null, ex);
            }

               }
               else{
                   fileChooser1.setSelectedFile(null);
                   
               }
    }

aber soll das bild nacher auf mein ganze panel gezeigt wird!*bin doof*
 
Zuletzt bearbeitet:

Schandro

Top Contributor
es kommt jetzt drauf an WIE das Bild angezeigt werden soll. Soll es an einer bestimmten Stelle sein oder soll es als Hintergrundsbild der gesamten GUI gemalten werden?
 

AA

Aktives Mitglied
Es soll als Hintergrundsbild der gesamten GUI gemalten werden.
ich habe heute mir überlegt es kann auch mit methode paint() überschrieben werden oder?
 

Schandro

Top Contributor
wenn die komplette GUI auf ein JPanel geklebt wurde. kannst du paintComponent dieses JPanels überschreiben und dort das image (welches als Membervariable zwischengespeichert werden muss) malen.
Übrigens: Wenn du paintComponent überschreibst, solltest du als erstes super.paintComponent innerhalb von paintComponent aufrufen.

Wenn du ein Beispielcode brauchen solltest frag nach.
 

AA

Aktives Mitglied
hallo zusammen, das mit ddem Hintergrung hochladen habe ich heute hingekriegt.
Java:
 private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {                                         



        JFileChooser fileChooser1 = new JFileChooser();
        FileNameExtensionFilter filter =new FileNameExtensionFilter("Bild", "jpg");
        fileChooser1.setAcceptAllFileFilterUsed(false);
        fileChooser1.setMultiSelectionEnabled(true);
        fileChooser1.addChoosableFileFilter(filter);
        fileChooser1.setDialogTitle("Wählen Sie Ihre Hintergrundbild:");
        
        fileChooser1.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
        int returnVal = fileChooser1.showOpenDialog((Component) evt.getSource());

        if (returnVal == JFileChooser.APPROVE_OPTION) {
            // block oder Statement
            try {
                File file = fileChooser1.getSelectedFile();
                image = ImageIO.read(file);
                repaint();


            } catch (IOException ex) {
                JOptionPane.showMessageDialog(null, "Datei konnte nicht gefunden werden", "Fehler", JOptionPane.ERROR_MESSAGE);
            }


        } else {
            fileChooser1.setSelectedFile(null);

        }
        
    }

aber ich glaube ich muss mein ganze Programm ändern :( ich habe meine daten in ein treemap gespeichert und jetzt möchte ich die in txt speichern in treemap ist so dass die werden von key reihen folge gelesen das heißt key 0 x 1 y1 color 1
aber ich möchte die in ein matrix eingeben 80 * 55 und man nur farben nummer eingibt, glaube muss anstatt treemao entweder hashmap nehmen oder 2D Array...
habt ihr ne Idee?

so sieht es jetzt aus aber man kriegt nur eine liste die unter key sortiert ist und nicht X
Java:
public String getDescription() {
                return "txt Files (*.txt)";
            }
        });
        if (fileChooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) {
            PrintStream stream = null;
            try {
                File file = fileChooser.getSelectedFile();
                stream = new PrintStream(new FileOutputStream(file));
                for (Integer i : map.keySet()) {
                    
                    Field f = map.get(i);
                    if (f.getY()== 0){
                        stream.print(f.getColor());
                                                
                    }else
                        stream.println();
                    

                    stream.print(i);
                    stream.print(" ");
                    stream.print(f.getX());
                    stream.print(" ");
                    stream.print(f.getY());
                    stream.print(" ");
                    stream.println(f.getColor());
                stream.print(f.getColor());

                }
Java:
final Map<Integer, Field> map = new TreeMap<Integer, Field>();

MFG AA
 
Zuletzt bearbeitet:

AA

Aktives Mitglied
yuhuuuu, es geht ich muss nicht was anderes nehmen kann bei treemap bleiben musste nur die for schleifen hier tauschen
Java:
for (int j = 0; j < 55; j++) {
            for (int i = 0; i < 80; i++) {
                map.put(index, new Field(color, new Point(i, j)));
                index++;
            }
        }
muss nur in matrix schreiben und nur farben ---> getcolor() eingeben
MFG AA
 
Zuletzt bearbeitet:

AA

Aktives Mitglied
mensch bin ich ja doof, habe mir einfacher vorgestellt aber irgendwie klappt es nicht:( so was möchte ich in txt datei speichern----> matrix 80*55 und values sollen getcolor werte sein. aber es geht nicht!
kann bitte mir jemand helfen oder ein Tipp geben

Danke
AA
 
T

Tomate_Salat

Gast
Du kannst die TreeMap doch einfach wieder auslesen:

Java:
for(int i=0;i<map.size();i++) {
       // code
}

dann kannst du im for-container einfach die Werte des Field-Objektes auslesen
Java:
for(int i=0;i<map.size();i++) {
       // code
       int x = map.get(i).getX();
       int y = map.get(i).getY();
       //...usw
}

und dann halt die Daten so abspeichern, wie du es gerne haben möchtest ;)

MFG

Tomate_Salat
 

AA

Aktives Mitglied
Guten Morgen,
danke für dein Amtwort aber wo9 kann ich dann color werte eintragen. es muss dann so sein --->
1010
0100
da wo getx=0 und gety=0 ist den getcolor=1 da wo getx=1 und gety=0 ist den getcolor=0 da wo getx=2 und gety=0 ist den getcolor=1 usw.

MFG AA
 
T

Tomate_Salat

Gast
Guten Morgen,
1010
0100
da wo getx=0 und gety=0 ist den getcolor=1 da wo getx=1 und gety=0 ist den getcolor=0 da wo getx=2 und gety=0 ist den getcolor=1

? Du hast 2 Reihen à 4 Ziffern?! Was hat die 4te für eine Eigenschaft? Verwirrt mich gerade was du meinst. Wenn dann empfehle ich dir das so

Code:
// X   Y  COLOR
   0   1    1
   0   0    1

Also jeweils mit einem leerzeichen dazwischen, sonst kannst du die Werte später nicht mehr auslesen[oder es kommt was unerwünschtes bei raus]!

du könntest es ja so machen:

Java:
String safe = "";
for(int i=0;i<map.size();i++) {
       // code
       int x = map.get(i).getX();
       int y = map.get(i).getY();
       int c = map.get(i).getColor();
       
       safe += x + " " + y + " " + c + "\n";
}

// Später dann den Safe-String in eine txt-Datei speichern

das \n erzwingt in der Datei danne einen Zeilenumbruch. Das Ergebnis könnte dann so aussehen:

0 0 1
0 1 3
0 2 0
0 3 2

MFG

Tomate_Salat
 
Zuletzt bearbeitet von einem Moderator:

AA

Aktives Mitglied
hallo
so habe ich es gemacht. ich möchte wie gesagt nur get Color werte specichern
Java:
public String getDescription() {
                return "txt Files";
            }
        });
        if (fileChooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) {
            PrintStream stream = null;
            char output[][] = new char[55][];
            for (int i = 0; i < output.length; i++) {
                output[i] = new char[80];
            }
            try {
                File file = fileChooser.getSelectedFile();
                stream = new PrintStream(new FileOutputStream(file));
//                for (Integer i : map.keySet())
                for(int i=0; i<map.size();i++){
                    Field f = map.get(i);
                    int x= map.get(i).getX();
                    int y= map.get(i).getY();
                    char color = 0;
                    if ( f.getColor() == Color.BLACK) {
                        color = '0';
                    }
                    else if ( f.getColor() == Color.WHITE ) {
                        color = '1';
                    }
                    else {
                        color = '1';
                    }
                    output[y][x] = color;
                }
                for (int i = 0; i < output.length; i++) {
                    stream.println(new String(output[i]));
                }
            } catch (FileNotFoundException ex) {
                Logger.getLogger(EditorFrame.class.getName()).log(Level.SEVERE, null, ex);
            } finally {
                stream.close();
            }
        }

    }
ich wollte x und y wer nicht mehr aus geben nur color werte und das geht oben oder habe ich was falsch gedacht??

Danke
MFG
AA
 
Zuletzt bearbeitet:
T

Tomate_Salat

Gast
Hast dus mal getestet?
Also deine Arbeit mit den Arrays kann ich nicht beurteilen, ich selber arbeite nur ungern mit denen ^^. Also, teste es mal. Gerne arbeite ich mich ein wenig in Arrays ein, wenn es nicht funktionieren sollte und helfe dann.

MFG

Tomate_Salat
 

AA

Aktives Mitglied
Guten Abend,
ich habe es getestet es funktioniert. die ziffern sind nicht x, y, color, sondern nur color .
Bsp:
http://upload.wikimedia.org/wikipedia/commons/d/d8/Matriz_organizacao.png
hier j sind meine x, i meine y und a´s meine colors.
oder habe ich nicht richtig?
hmmm ich habe aber jetzt wo anderes Problem usw. meine repaint methode nicht funktioniet, ich glaube ich muss paint methode in extra klasse schreiben:(, da ich viele kleine Panels habe und dass bild unter diese Panel möchte, jetzt wenn ich den Fenster bewege und außerhalb den monitor gehe und wieder zurück ist das Bild weg:oops:

MFG
AA
 
T

Tomate_Salat

Gast
ja scheint richtig zu sein.

zu deinem neuen Problem sage ich nur: Code her :p
Wenn du das Bild hinter die Panels stellst, die deine "Spielsteine" repräsentieren, dann darfst du den neutralen (weißen) keine Farbe geben, sonst überdecken die das Bild (logischerweise).

Das wäre jz mein Gedanke, was du gerade falsch machen könnest, aber wie gesagt: Code her :)

MFG

Tomate_Salat
 

AA

Aktives Mitglied
guten abend,
ja das auch muss irgendwie durchsichtig sein oder so. schicke ich dir gleich und gern mein code;), habe paar sachen ganz geändert
Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * EditorFrame.java
 *
 * Created on 19.05.2009, 08:00:37
 */
package MapEditor;

import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.util.Map;
import java.util.TreeMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;

/**
 *
 * @author Aida
 */
public class EditorFrame extends javax.swing.JFrame {


    final Map<Integer, Field> map = new TreeMap<Integer, Field>();
    public Image image = null;

    @Override
    public void paint(Graphics g) {
        super.paint(g);
        if (image != null) {
            g.drawImage(image, 0, 0, 800, 550, this);
        }
        for(int i=0; i<map.size();i++){
            Field f = map.get(i);
            int x= map.get(i).getX();
            int y= map.get(i).getY();
            if ( f.getColor() != Color.WHITE ) {
                g.setColor(f.getColor());
                g.fillRect(x*10, y*10, 10, 10);
            }
        }
        //zum Testenap
        System.out.println(jPanel1.getHeight() + "   " + jPanel1.getWidth());
    }

    /** Creates new form EditorFrame */
    public EditorFrame() {
        initComponents();

        Color color = Color.WHITE;
        int index = 0;


        for (int j = 0; j < 55; j++) {
            for (int i = 0; i < 80; i++) {
                map.put(index, new Field(color, new Point(i, j)));
                index++;
            }
        }

        jPanel1.setBounds(0, 0, 800, 550);


        for (int i = 0; i < map.size(); i++) {
            final int j = i;
            Color colour = map.get(i).getColor();
            JPanel tmp = new JPanel();

            map.get(i).setPanel(tmp);
            tmp.addMouseListener(new MouseListener() {

                int index = j;

                public void mouseClicked(MouseEvent e) {
                    Color color = map.get(j).getColor();
                    if ( color == Color.WHITE ) {
                        color = Color.BLACK; // passende Farbe
                    }
                    else {
                        color = Color.WHITE;
                    }
                    map.get(j).setColor(color);
                    e.getComponent().setBackground(color);
                }

                public void mousePressed(MouseEvent e) {
                }

                public void mouseReleased(MouseEvent e) {
                }

                public void mouseEntered(MouseEvent e) {
                    if (e.isAltDown()) {
                        Color color = Color.BLACK;
                        map.get(j).setColor(color);
                        e.getComponent().setBackground(color);
                    }

                    if (e.isControlDown()) {
                        Color color = Color.WHITE;
                        map.get(j).setColor(color);
                        e.getComponent().setBackground(color);
                    }
                }

                public void mouseExited(MouseEvent e) {
                }
            });

            tmp.addMouseMotionListener(new MouseMotionListener() {

                public void mouseDragged(MouseEvent e) {
                }

                public void mouseMoved(MouseEvent e) {
                }
            });

            tmp.setBounds(map.get(i).getX() * 10, map.get(i).getY() * 10, 10, 10);
            tmp.setBackground(colour);
            jPanel1.add(tmp);
        }
        repaint();
        pack();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        javax.swing.ButtonGroup group = new javax.swing.ButtonGroup();
        jPanel1 = new javax.swing.JPanel();
        jPanel2 = new javax.swing.JPanel();
        Black = new javax.swing.JRadioButton();
        Blue = new javax.swing.JRadioButton();
        Brown = new javax.swing.JRadioButton();
        Grey = new javax.swing.JRadioButton();
        Green = new javax.swing.JRadioButton();
        jButton1 = new javax.swing.JButton();
        jButton4 = new javax.swing.JButton();
        jButton3 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jPanel1.setMaximumSize(new java.awt.Dimension(800, 550));
        jPanel1.setMinimumSize(new java.awt.Dimension(800, 570));
        jPanel1.setPreferredSize(new java.awt.Dimension(800, 550));
        jPanel1.setLayout(null);
        getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);

        jPanel2.setLayout(new javax.swing.BoxLayout(jPanel2, javax.swing.BoxLayout.LINE_AXIS));

        group.add(Black);
        Black.setText("Black    ");
        Black.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                BlackActionPerformed(evt);
            }
        });
        jPanel2.add(Black);

        group.add(Blue);
        Blue.setText("Blue     ");
        Blue.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                BlueActionPerformed(evt);
            }
        });
        jPanel2.add(Blue);

        group.add(Brown);
        Brown.setText("Brown    ");
        Brown.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                BrownActionPerformed(evt);
            }
        });
        jPanel2.add(Brown);

        group.add(Grey);
        Grey.setText("Grey   ");
        Grey.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                GreyActionPerformed(evt);
            }
        });
        jPanel2.add(Grey);

        group.add(Green);
        Green.setText("Green ");
        Green.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                GreenActionPerformed(evt);
            }
        });
        jPanel2.add(Green);

        jButton1.setText("   Save   ");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        jPanel2.add(jButton1);

        jButton4.setText("Bild Hochladen");
        jButton4.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton4ActionPerformed(evt);
            }
        });
        jPanel2.add(jButton4);

        jButton3.setText("   Cancel   ");
        jButton3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton3ActionPerformed(evt);
            }
        });
        jPanel2.add(jButton3);

        getContentPane().add(jPanel2, java.awt.BorderLayout.SOUTH);

        pack();
    }// </editor-fold>                        

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        JFileChooser fileChooser = new JFileChooser();
        fileChooser.setFileFilter(new FileFilter() {

            public boolean accept(File file) {
                return file.getName().toLowerCase().endsWith(".txt") || file.isDirectory();
            }

            @Override
            public String getDescription() {
                return "txt Files";
            }
        });
//        String safe = "";
//        for(int i=0;i<map.size();i++) {
//       int x = map.get(i).getX();
//       int y = map.get(i).getY();
//       int c = map.get(i).getColor();
//
//       safe += x + " " + y + " " + c + "\n";
//}

        if (fileChooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) {
            PrintStream stream = null;
            char output[][] = new char[55][];
            for (int i = 0; i < output.length; i++) {
                output[i] = new char[80];
            }
            try {
                File file = fileChooser.getSelectedFile();
                stream = new PrintStream(new FileOutputStream(file));
//                for (Integer i : map.keySet())
                for(int i=0; i<map.size();i++){
                    Field f = map.get(i);
                    int x= map.get(i).getX();
                    int y= map.get(i).getY();
                    char color = 0;
                    if ( f.getColor() == Color.BLACK) {
                        color = '0';
                    }
                    else if ( f.getColor() == Color.WHITE ) {
                        color = '1';
                    }
                    else {
                        color = '1';
                    }
                    output[y][x] = color;
                }
                for (int i = 0; i < output.length; i++) {
                    stream.println(new String(output[i]));
                }
            } catch (FileNotFoundException ex) {
                Logger.getLogger(EditorFrame.class.getName()).log(Level.SEVERE, null, ex);
            } finally {
                stream.close();
            }
        }

    }                                        

    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        System.exit(0);
    }                                        

    private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {                                         



        JFileChooser fileChooser1 = new JFileChooser();
        FileNameExtensionFilter filter = new FileNameExtensionFilter("Bild", "jpg");
        fileChooser1.setAcceptAllFileFilterUsed(false);
        fileChooser1.setMultiSelectionEnabled(true);
        fileChooser1.addChoosableFileFilter(filter);
        fileChooser1.setDialogTitle("Wählen Sie Ihre Hintergrundbild:");

        fileChooser1.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
        int returnVal = fileChooser1.showOpenDialog((Component) evt.getSource());

        if (returnVal == JFileChooser.APPROVE_OPTION) {
            // block oder Statement
            try {
                File file = fileChooser1.getSelectedFile();
                image = ImageIO.read(file);
                repaint();


            } catch (IOException ex) {
                JOptionPane.showMessageDialog(null, "Datei konnte nicht gefunden werden", "Fehler", JOptionPane.ERROR_MESSAGE);
            }


        } else {
            fileChooser1.setSelectedFile(null);

        }

    }                                        

    private void BlueActionPerformed(java.awt.event.ActionEvent evt) {                                     
        // TODO add your handling code here:
}                                    

    private void BlackActionPerformed(java.awt.event.ActionEvent evt) {                                      
}                                     

    private void BrownActionPerformed(java.awt.event.ActionEvent evt) {                                      
        // TODO add your handling code here:
}                                     

    private void GreyActionPerformed(java.awt.event.ActionEvent evt) {                                     
        // TODO add your handling code here:
}                                    

    private void GreenActionPerformed(java.awt.event.ActionEvent evt) {                                      
        // TODO add your handling code here:
    }                                     

    // Variables declaration - do not modify                     
    private javax.swing.JRadioButton Black;
    private javax.swing.JRadioButton Blue;
    private javax.swing.JRadioButton Brown;
    private javax.swing.JRadioButton Green;
    private javax.swing.JRadioButton Grey;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    // End of variables declaration                   
}
Java:
package MapEditor;

import java.awt.Color;
import java.awt.Point;
import javax.swing.JPanel;



public class Field {
    private Color color;
    private Point koord;
    private JPanel panel;

    public Field(Color color,int x, int y) {
        this.color = color;
        this.koord = new Point(x,y);
    }

    public Field(Color color,Point point) {
        this.color = color;
        this.koord = point;
    }

    public void setColor(Color color) {
        this.color = color;
    }

    public Color getColor() {
        return this.color;
    }

    public int getX() {
        return this.koord.x;
    }

    public int getY() {
        return this.koord.y;
    }

    /**
     * @return the panel
     */
    public JPanel getPanel() {
        return panel;
    }

    /**
     * @param panel the panel to set
     */
    public void setPanel(JPanel panel) {
        this.panel = panel;
    }
}

Java:
package MapEditor;

import java.awt.Graphics;
import javax.swing.JFrame;



/**
 *
 * @author Aida
 */
public class Main {



    public static void main(String[] args) {

        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new EditorFrame().setVisible(true);
            }

        });

        /*
        JFrame frame = new JFrame("Map Editor");

        frame.setLayout(null);
        frame.setBounds(0, 0, 800, 550);

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //File f = new File("tmp.txt");
        final HashMap<Integer, 	Field> map = new HashMap<Integer, 	Field>();
        
        int color = 1;
        int index = 0;

        for (int i = 0; i < 80; i++) {
            for (int j = 0; j < 55; j++) {
                map.put(index, new Field(color, new Point(i, j)));
                index++;
            }
        }

        JPanel panel = new JPanel();
        panel.setBounds(0, 0, 800, 550);

        for (int i = 0; i < map.size(); i++) {
            final int j = i;
            Color colour = (map.get(i).getColor() == 0) ? Color.BLACK : Color.WHITE;
            JPanel tmp = new JPanel();

            tmp.addMouseListener(new MouseListener() {

                int index = j;

                public void mouseClicked(MouseEvent e) {
                    int color = map.get(j).getColor();
                    color = (color == 0) ? 1 : 0;
                    map.get(j).setColor(color);
                    Color colour = (color == 0) ? Color.BLACK : Color.WHITE;
                    e.getComponent().setBackground(colour);
                }

                public void mousePressed(MouseEvent e) {
                }

                public void mouseReleased(MouseEvent e) {
                }

                public void mouseEntered(MouseEvent e) {
                }

                public void mouseExited(MouseEvent e) {
                }
            });

            tmp.setBounds(map.get(i).getX(), map.get(i).getY(), 10, 10);
            tmp.setBackground(colour);
            panel.add(tmp);

        }

        frame.add(panel);
        frame.setVisible(true);
        */
    }


   
}
bitte schön und fals du was nicht gut findest, kannst mir bitte sagen, das wurde mir bestimmt helfen.

Danke
MFG AA
 
T

Tomate_Salat

Gast
Die paint-methode ist doch unnötig. Willst du damit erreichen, dass manche Panels keine Farben haben? Das geht wesentlich einfacher, wenn du z.B. beim MouseListener folgendes zeile Hinzufügst:

Java:
public void mouseClicked(MouseEvent e) {
    // CODE
    Color colour = (color == 0) ? Color.BLACK : Color.WHITE;
    if(e.getButton() == 3) colour = null;
    e.getComponent().setBackground(colour);
}

Das in Zeile 4:

Java:
if(e.getButton() == 3) colour = null;

erkläre ich mal, falls du nicht weist, was hier passiert:
Wenn e.getButton() == 3 true ist, dann wurde die rechte Maustaste gedrückt.
Ich glaube 1 wäre linke und 2 wäre mausrad.
ok, also wenn die rechte Maustaste gedrückt wird, wird colour auf null gesetzt, somit hat das Panel keine Farbe mehr und wird durchsichtig.

MFG

Tomate_Salat
 

AA

Aktives Mitglied
Java:
 public void paint(Graphics g) {
        super.paint(g);
        if (image != null) {
            g.drawImage(image, 0, 0, 800, 550, this);
        }
        for(int i=0; i<map.size();i++){
            Field f = map.get(i);
            int x= map.get(i).getX();
            int y= map.get(i).getY();
            if ( f.getColor() != Color.WHITE ) {
                g.setColor(f.getColor());
                g.fillRect(x*10, y*10, 10, 10);
            }
        }
        //zum Testenap
        System.out.println(jPanel1.getHeight() + "   " + jPanel1.getWidth());
    }
damit zeichne das image was ich hier hochgelaen habe--->
Java:
int returnVal = fileChooser1.showOpenDialog((Component) evt.getSource());

        if (returnVal == JFileChooser.APPROVE_OPTION) {
            // block oder Statement
            try {
                File file = fileChooser1.getSelectedFile();
                image = ImageIO.read(file);
                repaint();
oder nicht?
heute habe ich mein Code ein anderer prof gezeigt, meinte ich soll piant methode in andere class schreiben und von dort paint rufen oder so was...???:L
Donnerstag muss ich es bischen präsentieren und habe richtig Angst, Mein software Projekt Prof. darf das Fenster nicht bewegen sonst ist alles weg :oops:
MFG AA


PS: die farben bleiben das heißt wenn das bild weg ist die schwarz und weiße punkte bleiben ist auch gut so, aber das bild muss auch bleiben ;)
 
Zuletzt bearbeitet:
T

Tomate_Salat

Gast
Nun ja, mit paint habe ich nicht viel Erfahrung. Aber du könntest ganz in den Hintergrund auch ein großes JLabel setzen, da kannste ganz einfach ImageIcons [also Bilder] reinsetzen und auch ändern.

der Syntax ist ziemlich einfach:

Java:
JLabel test = new JLabel();
test.setIcon(new ImageIcon( new File(/*PFAD*/)) );

bei der erstInitalisierung kannst du das ImageIcon auch in den Konstruktor setzen.

Das Bild kannst du mit dem JFileChooser auch ganz einfach laden, das einzige was du brauchst ist der Pfad zum Bild und der wird dir ja zurückgeliefert.

Zu der paint-methode kann ich dir leider nicht weiterhelfen, denn mit der habe ich bisher nur im Tutorial gemacht.

P.S.: Viel Spaß bei der Präsentation, und bis donnerstag bekommste auch das Problem mit dem Bild gehändelt ;)

MFG

Tomate_Salat
 

AA

Aktives Mitglied
Danke für dein schnelle antwort, mit Jlabel habe ich erst probiert aber das Problem war dass das ich die punkte die ich gewählte habe nicht shen konnte aber deine Idee ist gut werde Morgen mich damit auseinander setzen. Heute muss mein Präsentation für morgen fertig machen, wissenschaftliche schreiben ----> soziales netzwerk :)
und morgen muss mich mit meinem Quwllcode und Programm beschäftigen:) ich muss auch das grupps aktivieren für andere Farben außer schwarz und weiß und muss ich auch maps hochalden können und weiterarbeiten können und danach Junit tests schreinem, aber nicht bis diese donnertsag:toll:


P.S.: Viel Spaß bei der Präsentation, und bis donnerstag bekommste auch das Problem mit dem Bild gehändelt ;)
ich hoffe es auch:D


wünsche dir nen schönen Abend
MFG
AA
 
T

Tomate_Salat

Gast
na dann hf bei der Präsentation. Würd ma grob schätzen: bis moje und noch viel Erfolg^^

MFG

Tomate_Salat
 

AA

Aktives Mitglied
hallo, ich habe eine frage:) kannst du bitte mir sagen was das Methode hier macht??
Java:
void save(File selectedFile) {
        PrintStream ps = null;
        try {
            ps = new PrintStream(selectedFile);
            for (Field[] row : fields) {
                for (Field field : row) {
                    ps.print(Field.getShortForColor(field.c));
                }
                ps.println();
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(PaintPanel.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            ps.close();
        }
    }

[/jAVA]

[code=Java]public void paint(Graphics gc) {
        if (image != null) {
            gc.drawImage(image, 0, 0, getWidth(), getHeight(), new ImageObserver() {
                public boolean imageUpdate(Image img, int infoflags, int x, int y, int width, int height) {
                    repaint();
                    return (infoflags & ImageObserver.ALLBITS) == 0;
                }
            });
        }
        for (int i = 0; i < fields.length; i++) {
            Field row[] = fields[i];
            for (int j = 0; j < row.length; j++) {
                if (row[j].c == Color.WHITE && image != null) {
                    continue;
                }
                gc.setColor(row[j].c);
                gc.fillRect(row[j].r.x, row[j].r.y, row[j].r.width, row[j].r.height);
            }
        }
    }


PS: Wissenschaftliche Präsentation ist gut gelaufen! yuhuuu
MFG
AA
 
Zuletzt bearbeitet:
T

Tomate_Salat

Gast
hallo, ich habe eine frage:) kannst du bitte mir sagen was das Methode hier macht??
Java:
void save(File selectedFile) {
        PrintStream ps = null;
        try {
            ps = new PrintStream(selectedFile);
            for (Field[] row : fields) {
                for (Field field : row) {
                    ps.print(Field.getShortForColor(field.c));
                }
                ps.println();
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(PaintPanel.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            ps.close();
        }
    }

[/jAVA][/QUOTE]

Ich nehme mal an: fields ist ein statistisches zweidimensionales Array. Was dich hier wahrscheinl. verwirrt ist das:

[code=Java]
for( Field field : row)

damit liest man ein Array aus, einfaches beispiel:

Java:
String[] abc = {"a","b","c"};

for(String single : abc) {
    System.out.println(single);
}

gibt als Ausgabe:

Code:
a
b
c

und die einzelnen Werte, die ausgelesen werden, werden in eine Datei geschrieben.

MFG

Tomate_Salat
 

AA

Aktives Mitglied
Danke das habe ich schon behauptet da ich das auch in Quell Code habe:

Java:
private Field fields[][] = new Field[ROWS][COLUMNS];
    private Color color = Color.BLACK;
    private Image image;

aber was bedeutet des denn?
Java:
 for (Field[] row : fields) {
                for (Field field : row) {
                    ps.print(Field.getShortForColor(field.c));
                }
                ps.println();
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(PaintPanel.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            ps.close();
        }
    }
 

AA

Aktives Mitglied
und des versteh auch net ganz???:L
Java:
public void paint(Graphics gc) {
        if (image != null) {
            gc.drawImage(image, 0, 0, getWidth(), getHeight(), new ImageObserver() {
                public boolean imageUpdate(Image img, int infoflags, int x, int y, int width, int height) {
                    repaint();
                    return (infoflags & ImageObserver.ALLBITS) == 0;
                }
            });
        }
        for (int i = 0; i < fields.length; i++) {
            Field row[] = fields[i];
            for (int j = 0; j < row.length; j++) {
                if (row[j].c == Color.WHITE && image != null) {
                    continue;
                }
                gc.setColor(row[j].c);
                gc.fillRect(row[j].r.x, row[j].r.y, row[j].r.width, row[j].r.height);
            }
        }
    }
 
T

Tomate_Salat

Gast
Danke das habe ich schon behauptet da ich das auch in Quell Code habe:

Java:
private Field fields[][] = new Field[ROWS][COLUMNS];
    private Color color = Color.BLACK;
    private Image image;

aber was bedeutet des denn?
Java:
 for (Field[] row : fields) {
                for (Field field : row) {
                    ps.print(Field.getShortForColor(field.c));
                }
                ps.println();
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(PaintPanel.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            ps.close();
        }
    }

Ich weis nicht ob ich deine Frage richtig verstanden habe, aber die Methode macht [denke] folgendes:
1.) sie füllt das Array Row mit der 2ten Dimension vom fields-array [hier bin ich mir nicht 100% sicher]
2.) nun übergibt es die Werte in der 2ten for-schleife an das field-Field-Objekt um damit Arbeiten zu können
3.) der vorher geöffnete Prinstream schreibt eine Zeile mit den Daten in die Datei
4.) er schliest die datei
Java:
ps.close()

und des versteh auch net ganz???:L
Java:
public void paint(Graphics gc) {
        if (image != null) {
            gc.drawImage(image, 0, 0, getWidth(), getHeight(), new ImageObserver() {
                public boolean imageUpdate(Image img, int infoflags, int x, int y, int width, int height) {
                    repaint();
                    return (infoflags & ImageObserver.ALLBITS) == 0;
                }
            });
        }
        for (int i = 0; i < fields.length; i++) {
            Field row[] = fields[i];
            for (int j = 0; j < row.length; j++) {
                if (row[j].c == Color.WHITE && image != null) {
                    continue;
                }
                gc.setColor(row[j].c);
                gc.fillRect(row[j].r.x, row[j].r.y, row[j].r.width, row[j].r.height);
            }
        }
    }

Ich denke hier ist dein Problem die Stelle:
Java:
if (image != null) {
            gc.drawImage(image, 0, 0, getWidth(), getHeight(), new ImageObserver() {
                public boolean imageUpdate(Image img, int infoflags, int x, int y, int width, int height) {
                    repaint();
                    return (infoflags & ImageObserver.ALLBITS) == 0;
                }
            });
        }
mit dem Image-Observer. Das ist wie ein Listener, der Zeichnet bei änderung des Bildes das Bild neu

MFG

Tomate_Salat
 

AA

Aktives Mitglied
hallo zusammen, noch eine frage
usw. warum hat er hier die forschleife so geschrieben mit :
Java:
static String getNameForColor(Color color) {
        //for (init; test; update)
        //  anweisung;

        for (String name : name2Color.keySet()) {
            if (getColorForName(name) == color) {
                return name;
            }
        }
        return null;
    }
[/Java]
ich kenne for schleife so---->
Z.b.
[code=Java]
for (int i = 0; i < 20; i++) {  
  if (i % 3 == 0) {  
     continue;  
  }  
 System.out.println(i);  
 }



Danke
MFG AA
 
T

Tomate_Salat

Gast
Habe ich doch erklärt:
liest man ein Array aus, einfaches beispiel:

Java:
String[] abc = {"a","b","c"};

for(String single : abc) {
    System.out.println(single);
}

gibt als Ausgabe:

Code:
a
b
c

Diese forschleife liest das Array rechts vom >:< aus und fügt nach und nach deren inhalt dem Objekt links davon zu, welches man dann benutzen kann.

MFG

Tomate_Salat
 

AA

Aktives Mitglied
das heißt wird diese Array gelesen oder?
Java:
 private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
        PaintPanel paintPanel = (PaintPanel) jPanel1;
        String name = (String)(jComboBox1.getSelectedItem());
        paintPanel.setColor(Field.name2Color.get(name));
    }
danke dir
 

AA

Aktives Mitglied
hallo zusamman,
am Donnerstag ist alles gut gelaufen. Mein Programm funktioniert auch so weit gut, bis jetzt war so dass ich dann markierte bereiche und nicht markierte in ein txt datei sperichern musste für Server, jetzt muss ich genau umgekehrt machen usw. muss ein txt datei aufmachen ucn dann diese map weiter arbeiten können und wieder Speichern können

Java:
package mapeditor;

import java.awt.Image;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;

public class EditorFrame extends javax.swing.JFrame {

    public EditorFrame() {
        initComponents();
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jPanel1 = new PaintPanel();
        jPanel2 = new javax.swing.JPanel();
        jComboBox1 = new javax.swing.JComboBox();
        jBild = new javax.swing.JButton();
        jSave = new javax.swing.JButton();
        jChange = new javax.swing.JButton();
        jCancel = new javax.swing.JButton();
        jMenuBar1 = new javax.swing.JMenuBar();
        jFile = new javax.swing.JMenu();
        jMenuItemChange = new javax.swing.JMenuItem();
        jMenuItemPhote = new javax.swing.JMenuItem();
        jMenuItemSave = new javax.swing.JMenuItem();
        jMenuItemClose = new javax.swing.JMenuItem();

        FormListener formListener = new FormListener();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("robofight");

        jPanel1.setMinimumSize(new java.awt.Dimension(800, 550));
        jPanel1.setPreferredSize(new java.awt.Dimension(800, 550));
        jPanel1.setLayout(null);
        getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);

        jPanel2.setLayout(new javax.swing.BoxLayout(jPanel2, javax.swing.BoxLayout.LINE_AXIS));

        jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "BLACK", "WHITE" }));
        jComboBox1.setMaximumSize(new java.awt.Dimension(120, 20));
        jComboBox1.setMinimumSize(new java.awt.Dimension(50, 20));
        jComboBox1.setPreferredSize(new java.awt.Dimension(50, 20));
        jComboBox1.addActionListener(formListener);
        jPanel2.add(jComboBox1);

        jBild.setText("Bild");
        jBild.addActionListener(formListener);
        jPanel2.add(jBild);

        jSave.setText("Speichern");
        jSave.addActionListener(formListener);
        jPanel2.add(jSave);

        jChange.setText("Ändern");
        jChange.addActionListener(formListener);
        jPanel2.add(jChange);

        jCancel.setText("Schließen");
        jCancel.addActionListener(formListener);
        jPanel2.add(jCancel);

        getContentPane().add(jPanel2, java.awt.BorderLayout.PAGE_END);

        jFile.setText("File");

        jMenuItemChange.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_O, java.awt.event.InputEvent.CTRL_MASK));
        jMenuItemChange.setText("Öffnen");
        jMenuItemChange.addActionListener(formListener);
        jFile.add(jMenuItemChange);

        jMenuItemPhote.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_B, java.awt.event.InputEvent.CTRL_MASK));
        jMenuItemPhote.setText("Bild laden");
        jMenuItemPhote.addActionListener(formListener);
        jFile.add(jMenuItemPhote);

        jMenuItemSave.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK));
        jMenuItemSave.setText("Speichern");
        jMenuItemSave.addActionListener(formListener);
        jFile.add(jMenuItemSave);

        jMenuItemClose.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F4, java.awt.event.InputEvent.ALT_MASK));
        jMenuItemClose.setText("Schließen");
        jMenuItemClose.addActionListener(formListener);
        jFile.add(jMenuItemClose);

        jMenuBar1.add(jFile);

        setJMenuBar(jMenuBar1);

        pack();
    }

    // Code for dispatching events from components to event handlers.

    private class FormListener implements java.awt.event.ActionListener {
        FormListener() {}
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            if (evt.getSource() == jComboBox1) {
                EditorFrame.this.jComboBox1ActionPerformed(evt);
            }
            else if (evt.getSource() == jBild) {
                EditorFrame.this.jBildActionPerformed(evt);
            }
            else if (evt.getSource() == jSave) {
                EditorFrame.this.jSaveActionPerformed(evt);
            }
            else if (evt.getSource() == jChange) {
                EditorFrame.this.jChangeActionPerformed(evt);
            }
            else if (evt.getSource() == jCancel) {
                EditorFrame.this.jCancelActionPerformed(evt);
            }
            else if (evt.getSource() == jMenuItemChange) {
                EditorFrame.this.jMenuItemChangeActionPerformed(evt);
            }
            else if (evt.getSource() == jMenuItemPhote) {
                EditorFrame.this.jMenuItemPhoteActionPerformed(evt);
            }
            else if (evt.getSource() == jMenuItemSave) {
                EditorFrame.this.jMenuItemSaveActionPerformed(evt);
            }
            else if (evt.getSource() == jMenuItemClose) {
                EditorFrame.this.jMenuItemCloseActionPerformed(evt);
            }
        }
    }// </editor-fold>

    private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
        PaintPanel paintPanel = (PaintPanel) jPanel1;
        String name = (String) (jComboBox1.getSelectedItem());
        paintPanel.setColor(Field.name2Color.get(name));
    }                                          

    private void jBildActionPerformed(java.awt.event.ActionEvent evt) {                                      
        JFileChooser jfc = new JFileChooser();
        jfc.setCurrentDirectory(new File("."));

        if (jfc.showOpenDialog(this) != JFileChooser.APPROVE_OPTION) {
            return;
        }

        try {
            PaintPanel paintPanel = (PaintPanel) jPanel1;
            Image image = ImageIO.read(jfc.getSelectedFile());
            paintPanel.setImage(image);
        } catch (IOException ex) {
            Logger.getLogger(EditorFrame.class.getName()).log(Level.SEVERE, null, ex);
        }
}                                     

    private void jSaveActionPerformed(java.awt.event.ActionEvent evt) {                                      
        JFileChooser jfc = new JFileChooser();
        jfc.setCurrentDirectory(new File("."));
        if( jfc.showSaveDialog(this)==JFileChooser.APPROVE_OPTION) {
            PaintPanel paintPanel = (PaintPanel)jPanel1;
            paintPanel.save(jfc.getSelectedFile());
        }
}                                     

    private void jMenuItemChangeActionPerformed(java.awt.event.ActionEvent evt) {                                                
JFileChooser jfc = new JFileChooser();
        jfc.setCurrentDirectory(new File("."));
        if( jfc.showSaveDialog(this)==JFileChooser.APPROVE_OPTION) {
            PaintPanel paintPanel = (PaintPanel)jPanel1;
            paintPanel.save(jfc.getSelectedFile());
        }
}                                               

    private void jMenuItemPhoteActionPerformed(java.awt.event.ActionEvent evt) {                                               
        JFileChooser jfc = new JFileChooser();
        FileNameExtensionFilter filter = new FileNameExtensionFilter("Bild", "jpg");
        jfc.setAcceptAllFileFilterUsed(false);
        jfc.setMultiSelectionEnabled(false);
        jfc.addChoosableFileFilter(filter);
        jfc.setDialogTitle("Wählen Sie Ihre Hintergrundbild aus:");
        //jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);


        if (jfc.showOpenDialog(this) != JFileChooser.APPROVE_OPTION) {
            return;
        }

        try {
            PaintPanel paintPanel = (PaintPanel) jPanel1;
            Image image = ImageIO.read(jfc.getSelectedFile());
            paintPanel.setImage(image);
        } catch (IOException ex) {
            Logger.getLogger(EditorFrame.class.getName()).log(Level.SEVERE, null, ex);
        }
}                                              

    private void jMenuItemSaveActionPerformed(java.awt.event.ActionEvent evt) {                                              
        JFileChooser fileChooser1 = new JFileChooser();
        fileChooser1.setCurrentDirectory(new File("."));
        if (fileChooser1.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) {
            PaintPanel paintPanel = (PaintPanel) jPanel1;
            paintPanel.save(fileChooser1.getSelectedFile());
        }

}                                             

    private void jMenuItemCloseActionPerformed(java.awt.event.ActionEvent evt) {                                               
        System.exit(0);
}                                              

    private void jChangeActionPerformed(java.awt.event.ActionEvent evt) {                                        
        // TODO add your handling code here:
}                                       

    private void jCancelActionPerformed(java.awt.event.ActionEvent evt) {                                        
        System.exit(0);
    }                                       

    // Variables declaration - do not modify
    private javax.swing.JButton jBild;
    private javax.swing.JButton jCancel;
    private javax.swing.JButton jChange;
    private javax.swing.JComboBox jComboBox1;
    private javax.swing.JMenu jFile;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuItem jMenuItemChange;
    private javax.swing.JMenuItem jMenuItemClose;
    private javax.swing.JMenuItem jMenuItemPhote;
    private javax.swing.JMenuItem jMenuItemSave;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JButton jSave;
    // End of variables declaration

}

Java:
package mapeditor;

import java.awt.Color;
import java.awt.Rectangle;
import java.util.TreeMap;

public class Field {

    static final TreeMap<String, Color> name2Color = new TreeMap<String, Color>() {

        {
            put("BLACK", Color.BLACK);
//            put("BLUE", Color.BLUE);
//            put("CYAN", Color.CYAN);
//            put("DARK_GRAY", Color.DARK_GRAY);
//            put("GRAY", Color.GRAY);
//            put("GREEN", Color.GREEN);
//            put("LIGHT_GRAY", Color.LIGHT_GRAY);
//            put("MAGENTA", Color.MAGENTA);
//            put("ORANGE", Color.ORANGE);
//            put("PINK", Color.PINK);
//            put("RED", Color.RED);
//            put("YELLOW", Color.YELLOW);
            put("WHITE", Color.WHITE);
        }
    };

    static Color getColorForName(String name) {
        return name2Color.get(name);
    }

    static String getNameForColor(Color color) {
        for (String name : name2Color.keySet()) {
            if (getColorForName(name) == color) {
                return name;
            }
        }
        return null;
    }

    static Character getShortForColor(Color color) {
        char c = 'a';
        for (String name : name2Color.keySet()) {
            if (getColorForName(name) == color) {
                return c;
            }
            c++;
        }
        return null;
    }

    Color c;
    Rectangle r;

    Field(Color color, Rectangle rect) {
        c = color;
        r = rect;
    }
}

Java:
package mapeditor;

public class Main {
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new EditorFrame().setVisible(true);
            }
        });
    }
}

Java:
package mapeditor;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.image.ImageObserver;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintStream;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JPanel;

public class PaintPanel extends JPanel {

    final static int GRID_X = 10;
    final static int GRID_Y = 10;
    final static int GAP = 0;
    final static int ROWS = 55;
    final static int COLUMNS = 80;
    private Field fields[][] = new Field[ROWS][COLUMNS];
    private Color color = Color.BLACK;
    private Image image;

    void save(File selectedFile) {
        PrintStream ps = null;
        try {
            ps = new PrintStream(selectedFile);
            for (Field[] row : fields) {
                for (Field field : row) {
                    ps.print(Field.getShortForColor(field.c));
                }
                ps.println();
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(PaintPanel.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            ps.close();
        }
    }

    public Color getColor() {
        return color;
    }

    public void setColor(Color color) {
        this.color = color;
    }

    public Image getImage() {
        return image;
    }

    public void setImage(Image image) {
        this.image = image;
        repaint();
    }

    

    public PaintPanel() {
        for (int i = 0; i < fields.length; i++) {
            Field row[] = fields[i];
            for (int j = 0; j < row.length; j++) {
                Rectangle r = new Rectangle(j * (GRID_X+GAP), i * (GRID_Y+GAP), GRID_X, GRID_Y);
                row[j] = new Field(Color.WHITE, r);
            }
        }
        addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                handleMouse(e);
            }
        });
        addMouseMotionListener(new MouseMotionAdapter() {
            @Override
            public void mouseDragged(MouseEvent e) {
                handleMouse(e);
            }
        });
        repaint();
    }

    @Override
    public void paint(Graphics gc) {
        if (image != null) {
            gc.drawImage(image, 0, 0, getWidth(), getHeight(), new ImageObserver() {
                public boolean imageUpdate(Image img, int infoflags, int x, int y, int width, int height) {
                    repaint();
                    return (infoflags & ImageObserver.ALLBITS) == 0;
                }
            });
        }
        for (int i = 0; i < fields.length; i++) {
            Field row[] = fields[i];
            for (int j = 0; j < row.length; j++) {
                if (row[j].c == Color.WHITE && image != null) {
                    continue;
                }
                gc.setColor(row[j].c);
                gc.fillRect(row[j].r.x, row[j].r.y, row[j].r.width, row[j].r.height);
            }
        }
    }

    private void handleMouse(MouseEvent e) {
        Point p = e.getPoint();
        if (p.x < 0 || p.x >= (GRID_X + GAP) * COLUMNS ||
                p.y < 0 || p.y >= (GRID_Y + GAP) * ROWS) {
            return;
        }
        int x = p.x / (GRID_X + GAP);
        int y = p.y / (GRID_Y + GAP);
        Field f = fields[y][x];
        f.c = getColor();
        repaint(f.r);
    }
}
habt ihre ne Vorschalg wie ich s am besten machen, ich muss glaube ich erst denn txt lesen in ein 2D array speichern und dann ausgeben oder?

MFG:toll:
schöne Pfingsten
 
Zuletzt bearbeitet:

AA

Aktives Mitglied
hallo zusammen
ich komme hier net weiter.
icha habe so angefangen aber ich weiß nicht wi ich gewählte txt datei hier weiter fen muss
Java:
private void jChangeActionPerformed(java.awt.event.ActionEvent evt) {                                        
       JFileChooser fileChooser1 = new JFileChooser();
        FileNameExtensionFilter filter = new FileNameExtensionFilter("Maps", "txt");
        fileChooser1.setAcceptAllFileFilterUsed(false);
        fileChooser1.setMultiSelectionEnabled(false);
        fileChooser1.addChoosableFileFilter(filter);
        if (fileChooser1.showOpenDialog(this) != JFileChooser.APPROVE_OPTION) {
            return;
         }
       try{
           testarray = new char[55][80];
           BufferedReader in = new BufferedReader(new FileReader(fileChooser1.getSelectedFile()));
           i = 0;
            sTemp = in.readLine();
            java.util.StringTokenizer stWerte = new java.util.StringTokenizer(sTemp, ",");
            j = 0;
            while (stWerte.hasMoreTokens()) {
                testarray[i][j] = (char) java.lang.Integer.parseInt(stWerte.nextToken());

                j++;

            }
            i++;


            } catch (FileNotFoundException ex) {
                Logger.getLogger(EditorFrame.class.getName()).log(Level.SEVERE, null, ex);
            }
}

und wie ich das nachher in mein Panel zeichnen muss. es gehts aber auch hier net:(
kann mir bitte jemand helfen
Danke
MFG Aida
 
Zuletzt bearbeitet:

Marco13

Top Contributor
Falls Tomate_Salat nicht mehr antwortet, solltest du ggf. eine PRÄZISE Frage in einem neuen Thread stellen.
 

AA

Aktives Mitglied
Hallo zusammen,
ich danke euch alle, ich habe es schon geschrieben und abgegeben und mein Prof. war auch zufrieden. falls jemand es braucht einfach sagen dann werde ich hier schreiben.
wünsche euch schönes WE
AA
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
krgewb remove beim Iterieren einer HashMap Java Basics - Anfänger-Themen 3
F Java Object to Hashmap ? Java Basics - Anfänger-Themen 6
S HashMap mehrere Keys zu einem Value Java Basics - Anfänger-Themen 3
A Daten aus einer HashMap aus einer DB speichern und mit neuen Werten vergleichen Java Basics - Anfänger-Themen 8
T HashMap Lsite gibt die sachen nicht aus wie gewollt. Java Basics - Anfänger-Themen 3
krgewb HashMap Java Basics - Anfänger-Themen 2
B Hashmap richtig bauen, die Tripel auf Zahl abbildet? Java Basics - Anfänger-Themen 10
"java.util.HashMap.get(Object)" is null Java Basics - Anfänger-Themen 10
berserkerdq2 Hashmap, wie prüfe ich ob ein Key schon existiert Java Basics - Anfänger-Themen 19
S Durch HashMap iterieren Java Basics - Anfänger-Themen 8
rafi072001 Sortieren einer HashMap nach Values Java Basics - Anfänger-Themen 2
F gson mit einer Hashmap Java Basics - Anfänger-Themen 2
J JSON-HashMap Java Basics - Anfänger-Themen 3
J Hashmap Java Basics - Anfänger-Themen 13
C Hashmap zickt Java Basics - Anfänger-Themen 9
S HashMap contains() Methode Java Basics - Anfänger-Themen 1
Z Satz aufteilen und die Wörter zählen (HashMap) Java Basics - Anfänger-Themen 15
N enum Attribut von Objekten einer Hashmap ausgeben Java Basics - Anfänger-Themen 6
P Verschachtelte Hashmap Java Basics - Anfänger-Themen 6
I Sortiert eine HashMap nicht gleich wie eine ArrayList? Java Basics - Anfänger-Themen 1
B HashMap alphabetisch sortieren Java Basics - Anfänger-Themen 2
J HashMap Java Basics - Anfänger-Themen 6
M Enum-Variable HashMap zuweisen Java Basics - Anfänger-Themen 5
U Hashmap Iterator selbst implementieren Java Basics - Anfänger-Themen 10
N HashMap in List good practice? Java Basics - Anfänger-Themen 2
K Value eines HashMaps in einer HashMap wiedergeben. Java Basics - Anfänger-Themen 5
O Hashmap, ArrayList, LinkedList Java Basics - Anfänger-Themen 7
O HashMap - ArrayList Java Basics - Anfänger-Themen 29
J Hashmap langsamer als compareTo? Java Basics - Anfänger-Themen 23
E HashMap+Vererbung Java Basics - Anfänger-Themen 11
J Erhöhen eines Values als Integer bei gleichen Keys in HashMap Java Basics - Anfänger-Themen 12
N Methoden HashMap interne Werte miteinander vergleichen Java Basics - Anfänger-Themen 7
W The type Long is not visible HashMap Java Basics - Anfänger-Themen 4
M Objekt mit Hashmap vergleichen Java Basics - Anfänger-Themen 22
S Gibt es für die Klasse HashMap Generic Implementierungen? Java Basics - Anfänger-Themen 11
C HashMap - alle keys haben values der letzten put-Anweisung Java Basics - Anfänger-Themen 3
J Hashmap auslesen Java Basics - Anfänger-Themen 7
F HashMap sortieren <String, Long> Java Basics - Anfänger-Themen 3
GreenTeaYT HashMap dupliziert meine Elemente? Java Basics - Anfänger-Themen 2
shiroX Methoden Morse-Code Übersetzer mit HashMap Java Basics - Anfänger-Themen 5
E HashMap Problem Java Basics - Anfänger-Themen 5
P Hashmap anstatt LinkedList? Java Basics - Anfänger-Themen 6
T HashMap und die Methoden Java Basics - Anfänger-Themen 13
N Methoden Interaktives PDF mit HashMap befüllen Java Basics - Anfänger-Themen 0
Z Hashmap auseinandernehmen und analysieren Java Basics - Anfänger-Themen 7
B Durchlaufen von Hashmap und Arraylist Java Basics - Anfänger-Themen 8
F HashMap oder welches Array? Java Basics - Anfänger-Themen 4
T HashMap Java Basics - Anfänger-Themen 24
L Hashmap mit variablem Key Java Basics - Anfänger-Themen 9
M Collections Probleme mit Hashmap Java Basics - Anfänger-Themen 4
N Collections String in HashMap umwandeln Java Basics - Anfänger-Themen 3
Z HashMap richtig benutzen Java Basics - Anfänger-Themen 2
lgund HashMap // TS3 Query Java Basics - Anfänger-Themen 7
Z Hashmap Iterator löscht nicht Java Basics - Anfänger-Themen 8
E Hashmap Wert auslesen Java Basics - Anfänger-Themen 2
S Printstream für einen Hashmap Loop Java Basics - Anfänger-Themen 1
dat_vin OOP Hashmap und Attribute Java Basics - Anfänger-Themen 7
C Check ob eine HashMap schon existiert Java Basics - Anfänger-Themen 16
G Vererbung Eigene HashMap Variante Java Basics - Anfänger-Themen 2
R Hashmap in anderer Klasse nicht benutzbar Java Basics - Anfänger-Themen 1
T Java Hashmap Java Basics - Anfänger-Themen 3
L Gibt es etwas wie "HashMap <String, String, String> Java Basics - Anfänger-Themen 9
K HashMap mit Daten aus ArrayList befüllen Java Basics - Anfänger-Themen 14
S OOP Klasse mit static-Eigenschaften - HashMap füllen Java Basics - Anfänger-Themen 6
O HashMap Fragen Java Basics - Anfänger-Themen 8
T HashMap Werte einfügen, durchsuchen und auslesen Java Basics - Anfänger-Themen 17
M Semantisches Problem HashMap/Netzwerk Java Basics - Anfänger-Themen 4
D HashMap Keys durchlaufen Java Basics - Anfänger-Themen 2
B Zugriff auf csv-Datei per hashmap Java Basics - Anfänger-Themen 5
M HashMap keys ausgeben Java Basics - Anfänger-Themen 2
S In einer Hashmap Klassen regestrieren Java Basics - Anfänger-Themen 2
H Collections Was ist schneller - HashMap + Sort v TreeMap? Java Basics - Anfänger-Themen 75
F HashMap nach kleinstem Value durchsuchen Java Basics - Anfänger-Themen 11
G HashMap Java Basics - Anfänger-Themen 6
F Wortpaare - HashMap - ArrayList Java Basics - Anfänger-Themen 6
M HashMap Frage Java Basics - Anfänger-Themen 3
M HashMap - put() reagiert nicht? Java Basics - Anfänger-Themen 8
N Cast eines Objektes in eine Hashmap Java Basics - Anfänger-Themen 13
A CSV Zeilenweise einlesen und in einer HashMap speichern Java Basics - Anfänger-Themen 12
A Input/Output Hashmap in einem JPanel via JList anzeigen Java Basics - Anfänger-Themen 8
K HashMap auf leere Key-Value-Paare prüfen Java Basics - Anfänger-Themen 14
F Hilfe bei der HashMap. Java Basics - Anfänger-Themen 3
F HashMap vs. TreeMap Java Basics - Anfänger-Themen 5
B HashMap Java Basics - Anfänger-Themen 9
C Collections String[] als value in HashMap Java Basics - Anfänger-Themen 6
V Hashmap Iterieren Java Basics - Anfänger-Themen 4
C Csv File in Hashmap ausgeben Java Basics - Anfänger-Themen 14
T HashMap<String,Object> Werte auslesen Java Basics - Anfänger-Themen 5
I HashMap sortieren Java Basics - Anfänger-Themen 10
I HashMap Java Basics - Anfänger-Themen 11
H Collections Brauche modifizierte HashMap Java Basics - Anfänger-Themen 6
H TreeMap/HashMap synchronisieren Java Basics - Anfänger-Themen 2
A Datentypen Hashmap to Array Java Basics - Anfänger-Themen 11
D HashMap überschreibt Werte Java Basics - Anfänger-Themen 7
pg1337 Interface Comparable-Interface bei HashMap Java Basics - Anfänger-Themen 21
D erweiterte hashmap Java Basics - Anfänger-Themen 5
H HashMap<Int, String> - Er findet die Int-Klasse nicht. Java Basics - Anfänger-Themen 3
L HashMap zu JList Java Basics - Anfänger-Themen 6
S Erste Schritte HashMap Kurze Frage - Werte über Schleife ausgeben Java Basics - Anfänger-Themen 30
F Collections ArrayList oder Hashmap mittel Collections.sychronised Java Basics - Anfänger-Themen 6

Ähnliche Java Themen


Oben