Zum Inhalt springen

diesy

Mitglieder
  • Gesamte Inhalte

    34
  • Benutzer seit

  • Letzter Besuch

Beiträge von diesy

  1. Neue Konfigurationsdatei zum Projekt hinzufügen, wenn nicht schon vorhanden.

    Diese (heißt settings.settings unter Properties), einen Wert(meinPfad) hinzufügen als String.

    Zugreifen auf die Variable kannst du über:

    MeinProg.Properties.Settings.Default.meinPfad

    Am Ende, wenn diese verändert wird mit Hilfe von

    MeinProg.Properties.Settings.Default.Save();

  2. @Kaeyu

    Den Quellcode hier zu posten würde den Rahmen sprengen und keiner würde es lesen :)

    Es geht nur darum, dass ich ein Panel extends javax.swing.JPanel erstellt habe, dort ist eine JToolbar, auf dieser sitzt eine JCombo, die wird automatisch mit Werten gefüllt. In der NetBeans 5.5 IDE bzw. als reine Java Anwendung funktioniert die JCombo wunderbar. Kann dort Werte eintippen bzw. auswählen.

    Will ich sie jedoch über die SWT_AWT Bridge in eine Eclipse View einbinden will, funktioniert diese JCombo nicht mehr. Ich kann dort keine Werte auswählen, irgendwas eintippen. Beim anklicken auf den Pfeil zum anzeigen der vorhanden Werte wird die Liste für Millisekunden angezeigt.

    Die Frage ist jetzt einfach, was könnte es sein, bzw. können sich Events stören, der java.awt.event.ItemListener der JCombo irgedwo mit SWT Events nicht vertragen?

  3. Hallo!

    Ich habe folgendes Problem:

    In SWT wurde eine JCombo, weche auf einer JToolbar sitzt, integriert. Es wird alles angezeigt, das Problem ist nur, ich kann in dieser nichts tippen (Ist aktiviert und unter NetBeans funktionert es) und kann die Elementenliste nicht anzeigen lassen, da diese sofort verschwindet.

    Was könnte es sein, dass die Elementenliste nicht sichtbar ist bzw. keine Editierbarkeit möglich ist.

    Gruß diesy!

  4. Hallo,

    ich habe ein kleines Problem mit JLabel, ImageIcon und Rectangle2D. Ich will auf ein JLabel ein ImageIcon( Bild ) platzieren, klappt alles wunderbar. Es gibt auch keine Probleme. Danach will ich jedoch ein Rectangle2D(Quadrat) von beliebiger Größe auf das JLabel/ImageIcon setzen/malen. Das macht er auch, bloß, das Problem ist jetzt folgendes:

    Wenn ich die Anwendung minimiere und wieder maximiere/wiederherstelle wird das Quadrat nicht mehr angezeigt. Das wird mehr oder weniger von dem Bild überlagert.

    Ich habe dazu paar Events implementiert, die auf die Größenänderung und Drag Mouse reagiert, dass funktioniert und das Quadrat wird bei den Events gezeichnet.

    Gibt es eine Möglichkeit das Quadrat beim Maximieren bzw. beim Focus kriegen auf dem JLabel im Vordergrund zu zeichnen?

    Bzw. welches Event ist dafür verantwortlich um zu merken, dass das JLabel wieder angezeigt wird bzw. wieder im Vordergrund ist?

    Bzw. kann man irgendwie die Prioritäten der Objekte beim JLabel vergeben? Dass z.B. Bilder immer unten sind und Rectangle dann oben.

    Bedingung ist halt eben, dass man nicht auf das Frame bzw. auf das hauptfenster zugreifen darf.

  5. So könnte es gehen bzw. wäre realisierbar auf dem einfachen Weg:

    Die Main-Klasse:

    
    
    public class Main {
    
    
    	private static Eingabe eing;
    
    
    	private static String user;
    
    
    	private static String jaNein;
    
    
    	private static String meinStock;
    
    
    	/**
    
    	 * @param args
    
    	 */
    
    	public static void main(String[] args) {
    
    		eing = new Eingabe();
    
    		System.out.println("Hallo bitte gebe deinen Spieler Namen ein: ");
    
    		user = eing.eingString();
    
    		System.out.println("Hallo " + user + " das ist ein Rollen Spiel \n Du stehst am Waldrand vor dir \n siehst du ein Dorf \n Willst du ins Dorf gehen Ja/Nein");
    
    		jaNein = eing.eingString();
    
    		if (jaNein.equalsIgnoreCase("Ja"))
    
    			starteSpiel();
    
    		else
    
    			System.err.println("Du wolltest nicht in das Dorf gehen \n die Sonne ging unter und die wilden Tiere \n taten den Rest \n GAME OVER");
    
    	}
    
    
    	private static void starteSpiel() {
    
    		System.out.println("Du begibst dich in die Stadt auf dem Weg \n dahin triffst du einen alten Mann \n dieser möchte dir einen alten stock geben \n nehmen/weitergehen");
    
    		jaNein = eing.eingString();
    
    		if (jaNein.equalsIgnoreCase("nehmen"))
    
    			mitStock();
    
    		else
    
    			ohneStock();
    
    	}
    
    
    	private static void mitStock() {
    
    		meinStock = eing.eingString();
    
    		System.out.println(meinStock);
    
    		// TODO Auto-generated method stub
    
    		// usw. ...
    
    	}
    
    
    	private static void ohneStock() {
    
    		// TODO Auto-generated method stub		
    
    	}
    
    }
    
    
    Die Eingabe-Klasse:
    
    import java.io.BufferedReader;
    
    import java.io.DataInputStream;
    
    import java.io.IOException;
    
    import java.io.InputStreamReader;
    
    
    /**
    
     * Die Klasse enthält Eingabemethoden für die Eingabe eines Strings mit und ohne
    
     * Eingabeaufforderung Eingabe eines Zeichens mit und ohne Eingabeaufforderung
    
     * Eingabe einer Zahl (integer) mit und ohne Eingabeaufforderung
    
     *  
    
     */
    
    public class Eingabe {
    
    
    	/***************************************************************************
    
    	 * Eingabe eines String ohne Eingabeaufforderung die Methode liefert einen
    
    	 * String zurück, der über Tastatur eingeben wurde
    
    	 **************************************************************************/
    
    
    	public String eingString() {
    
    		String sin = " ";
    
    		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    
    		try {
    
    			sin = in.readLine();
    
    		} catch (IOException e) {
    
    			System.out.println(e.toString());
    
    		}
    
    		return sin;
    
    	}
    
    
    	/***************************************************************************
    
    	 * Eingabe eines String mit Eingabeaufforderung die Methode liefert einen
    
    	 * String zurück, der über Tastatur eingeben wurde
    
    	 **************************************************************************/
    
    
    	public String eingString(String s) {
    
    		String sin = " ";
    
    		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    
    		try {
    
    			System.out.print(s);
    
    			sin = in.readLine();
    
    		} catch (IOException e) {
    
    			System.out.println(e.toString());
    
    		}
    
    		return sin;
    
    	}
    
    
    	/***************************************************************************
    
    	 * Eingabe eines Zeichens ohne Eingabeaufforderung die Methode liefert ein
    
    	 * zeichen zurück, das über Tastatur eingeben wurde
    
    	 **************************************************************************/
    
    
    	public char eingChar() {
    
    		char cin = ' ';
    
    		DataInputStream in = new DataInputStream(System.in);
    
    		try {
    
    			cin = in.readChar();
    
    			System.out.print("..." + cin);
    
    		} catch (IOException e) {
    
    			System.out.println(e.toString());
    
    		}
    
    		return cin;
    
    	}
    
    
    	/***************************************************************************
    
    	 * Eingabe eines Zeichens mit Eingabeaufforderung die Methode liefert ein
    
    	 * zeichen zurück, das über Tastatur eingeben wurde
    
    	 **************************************************************************/
    
    
    	public char eingChar(String s) {
    
    		char cin = ' ';
    
    		DataInputStream in = new DataInputStream(System.in);
    
    		try {
    
    			System.out.print(s);
    
    			cin = in.readChar();
    
    		} catch (IOException e) {
    
    			System.out.println(e.toString());
    
    		}
    
    		return cin;
    
    	}
    
    
    	/***************************************************************************
    
    	 * Eingabe eines Integer ohne Eingabeaufforderung die Methode leist einen
    
    	 * String ein und wandelt ihn in int
    
    	 **************************************************************************/
    
    
    	public int eingInt() {
    
    		Integer i = new Integer(eingString());
    
    		return i.intValue();
    
    	}
    
    
    	/***************************************************************************
    
    	 * Eingabe eines Integer mit Eingabeaufforderung die Methode leist einen
    
    	 * String ein und wandelt ihn in int
    
    	 **************************************************************************/
    
    	public int eingInt(String s) {
    
    		Integer i = new Integer(eingString(s));
    
    		return i.intValue();
    
    	}
    
    }
    
    

    Das Ganze könnte man weiter verfeinern, indem man die ganzen Funktionen noch in Klassen auslagert, aber dazu sollte man sich belesen.

  6. Du brauchst eigentlich nur die Klasse, die ich gepostet habe in eine Datei namens eingabe.java zu kopieren. (Du kannst/musst mal hier noch den Namen groß schreiben, sowohl in der Datei als auch in der Klasse) und dann einfach in jedem Programm mittels:

    Eingabe eing = new Eingabe();
    
    String hans = eing.eingString()

    aufrufen um z.B. einen String einzugeben.

  7. Blödsinn! Das Laufzeitverhalten einer ArrayList beim Zugriff konstant, das heisst es macht überhaupt keinen Unterschied ob die Liste nun 10 oder 10.000 Einträge enthält.

    Ok, dann war meine Entscheidung schon von Anfang an richtig eine ArrayList zu benutzen.

  8. Der Datentyp soll Value Objects speichern, wie die aufgebaut sind, ist uninteressant!

    Menge:

    Datensätze(könnten über 1000 werden)

    Mit Datensätze meine ich eben die Value Objects.

    PS: Zum Thema Sprache, würde ja sonst nicht in Java posten ;)

  9. Ich habe jetzt mal gelesen, dass ein Vector auch ganz gut geeignet dafür wäre, wenn man den Wachstum manuell eingibt. Es werden jedoch je nach dem, wie groß die Wachstumsschritte sind mehr oder weniger Rechnenleistung benötigt.

    Bei einem Array sehe ich das Problem, dass man die Größe vordefinieren muss.

  10. Hier mal eine "Eingabe-Klasse", die uns mal gegeben wurde:

    
    import java.io.*;
    
    
    /**  Die Klasse enthält Eingabemethoden für die
    
     * Eingabe eines Strings mit und ohne Eingabeaufforderung
    
     *Eingabe eines Zeichens mit und ohne Eingabeaufforderung
    
     *Eingabe einer Zahl (integer) mit und ohne Eingabeaufforderung
    
     **/
    
    public class eingabe {
    
    
        /**  Eingabe eines String ohne Eingabeaufforderung *******
    
         * die Methode liefert einen String zurück, der über Tastatur eingeben wurde **/
    
    
        public String eingString() {
    
            String sin = " ";
    
            BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    
            try {
    
                sin=in.readLine();
    
            }
    
            catch(IOException e) {
    
                System.out.println(e.toString());
    
            }
    
            return sin;
    
        }
    
    
        /**  Eingabe eines String mit Eingabeaufforderung *******
    
         * die Methode liefert einen String zurück, der über Tastatur eingeben wurde **/
    
    
        public String eingString(String s) {
    
            String sin = " ";
    
            BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    
            try {
    
                System.out.print(s);
    
                sin=in.readLine();
    
            }
    
            catch(IOException e) {
    
                System.out.println(e.toString());
    
            }
    
            return sin;
    
        }
    
    
        /**  Eingabe eines Zeichens ohne Eingabeaufforderung *******
    
         * die Methode liefert ein zeichen zurück, das über Tastatur eingeben wurde **/
    
    
        public char eingChar() {
    
            char cin = ' ';
    
            DataInputStream in = new DataInputStream(System.in);
    
            try {
    
                cin=in.readChar();
    
                System.out.print("..." + cin);
    
            }
    
            catch(IOException e) {
    
                System.out.println(e.toString());
    
            }
    
            return cin;
    
        }
    
    
        /**  Eingabe eines Zeichens mit Eingabeaufforderung *******
    
         * die Methode liefert ein zeichen zurück, das über Tastatur eingeben wurde **/
    
    
        public char eingChar(String s) {
    
            char cin = ' ';
    
            DataInputStream in = new DataInputStream(System.in);
    
            try {
    
                System.out.print(s);
    
                cin=in.readChar();
    
            }
    
            catch(IOException e) {
    
                System.out.println(e.toString());
    
            }
    
            return cin;
    
        }
    
    
        /**  Eingabe eines Integer ohne Eingabeaufforderung *******
    
         * die Methode leist einen String ein und wandelt ihn in int **/
    
    
        public int eingInt() {
    
            Integer i = new Integer(eingString());
    
            return i.intValue();
    
        }
    
    
        /**  Eingabe eines Integer mit Eingabeaufforderung *******
    
         * die Methode leist einen String ein und wandelt ihn in int **/
    
        public int eingInt(String s) {
    
            Integer i = new Integer(eingString(s));
    
            return i.intValue();
    
        }
    
    }
    
    
    

    Kannst dir das richtige rauskopieren.

  11. Hallo,

    weiss einer, welche Datentyp am besten geeignet um große Datenmengen zu speichern?

    Ich verwendete Derzeit eine ArrayList in folgender Form:

    ArrayList<CustomerVO>

    , wurde jedoch mal darauf hingewiesen, dass eine ArrayListe evtl. nicht so gut ist, wenn man zu viele Datensätze(könnten über 1000 werden) in der ArrayList speichert(langsam usw.). Was könnte man sonst noch nehmen? Hashmap, ...?

    Gruß diesy!

  12. ok, habe jetzt den test gemacht:

    Datei: 4.380.275 Byte

    StreamWriter: 11,33 sek

    renameTo(): 0,0086 sek

    1146087124687 - zeit 1

    1146087165484 - zeit 2 - nach dem schreiben mit dem FileOutputStream

    1146087165515 - zeit 3 - nach dem kopieren mit renameTo() Funktion

    Date hat damit zu tun, dass ich damit die zeit am einfachsten messe.

    der code dafür sieht so aus:

    public static void copyBytes(String iFile, String oFile) throws IOException

    {

    File inputFile = new File(iFile);

    File outputFile = new File(oFile);

    FileInputStream in = new FileInputStream(inputFile);

    FileOutputStream out = new FileOutputStream(outputFile);

    int c;

    while ((c = in.read()) != -1)

    out.write©;

    in.close();

    out.close();

    //inputFile.delete();

    }

    public static void main(String[] args) throws IOException

    {

    Date d = new Date();

    System.out.println(d.getTime());

    copyBytes("c:\\test\\testdatei.jpg", "c:\\test\\copy_stream\\copy.jpg");

    d = new Date();

    System.out.println(d.getTime());

    File f = new File("c:\\test\\testdatei.jpg");

    f.renameTo(new File("c:\\test\\copy_rename\\copy.jpg"));

    d = new Date();

    System.out.println(d.getTime());

    }

    wenn du es besser weisst, kannst mir ja einen lösungsvorschlag mal machen oder eine lösung verraten, ich bin für alles offen! Und ich brauche keine Gigabyte zu verschieben, es reicht wenn das nur paar MB sind.

  13. Ist das die Art und Weise, wie du Probleme "löst", die sich irgendwann stellen? Selbst wenn wir mal davon ausgehen, dass du damit im Moment gut fährst - wer garantiert dir denn, dass unter Windows Vista das Verhalten auch noch in Ordnung ist? Was passiert wenn dein Kunde nächstes Jahr beschließt zu wechseln? Wer garantiert dir, dass das Verhalten unter Mustang auch noch so ist, wie du es jetzt gewohnt bist? Auf solche "ausprobiert, klappt im Moment auch" Lösungen würde ich immer verzichten wollen.

    Ich habe ja noch nicht behauptet dass mir diese Lösung gefällt! Da sie halt eben nicht perfekt ist! Und ich auch die "Plattformunabhängigkeit" garantieren will.

    Hast du das tatsächlich ausgetestet, (mit einem Profiler) gemessen und damit diese Aussage verifizieren können? Oder glaubst du nur, dass es - merklich - länger dauert? Vorzeitig anzunehmen, dass in diesem Falle ein Copy länger dauert als ein rename verleitet sehr schnell zu falschen Annahmen. Was ist, wenn renameTo (je nach Plattform) intern genau das macht?

    Und selbst wenn es 10x so lange dauert eine Datei zu kopieren, als sie umzubenennen - bist du wirklich sicher, dass genau diese Aktion der Bottleneck deiner Anwendung ist? Hast du tausende Files, die es zu verschieben gilt?

    ich habe das zwar nicht mit einem Profiler getestet aber ein einfaches Date() reicht aus um zu sagen, dass es sehr lahm ist. Da geht der einfache Windows-Copy schneller!

    ich kann dir gerne 2 Varianten anfertigen, einmal mit renameTo() und einmal mit dem Input/OutputStreamWriter.

    Darfst es selber testen, indem du paar MB große Dateien mal selbst auf einem Laufwerk verschiebst. ;)

  14. Und weil kaum jemand einen anderen Browser nutzt als den InternetExplorer muss auch kein valides HTML "programmiert" werden. Also ich kenne wenige ApplicationServer die tatsächlich auf Windows in der Praxis sind. Und warum sollte ich eine plattform unabhänige Sprache benutzen wenn ich sie so verwenden das sie plattform abhängig wird ?

    ja, wenn man webserver und co nimmt, dann hat windows sicherlich einen kleinen nachteil. aber wenn es um den dau geht, dann fahren die meisten mit xp und auch ohne firewall + av rum!

    STRG + X STRG + V

    muss automatisch geschehen, nicht manuell :) deswegen ist renameTo() schon nicht schlecht.

    Zeitaufwändig zur Laufzeit oder während der Entwicklung ?

    Zeitaufwändig zur Laufzeit!

    Um eine 1,6 MB große Datei 10 mal auf einen anderen laufwerk zu schreiben braucht man sehr lange! habe das mit den zeiten getestet, war nicht akzeptabel.

  15. dann wäre dass das zweite OS wo es funktioniert.

    und da linux und fat heute eh nur einen geringen anteil darstellen, wäre das verkraftbar.

    gibt es sonst eine lösung, dateien, von einem laufwerk auf einen anderen zu verschieben. ohne sie mit streams dorthin zu schreiben, da diese methode sehr zeitaufwändig ist.

  16. @perdi

    du kannst folgenden code ja ausprobieren:

    
    
    import java.io.File;
    
    import java.io.IOException;
    
    import java.util.Date;
    
    
    public class WriteTest
    
    {    
    
        public static void main(String[] args) throws IOException
    
        {
    
            Date d = new Date();
    
            System.out.println(d.getTime());
    
    
            File f = new File("c:\\datei.jpg");    
    
            f.renameTo(new File("g:\\copy.jpg"));
    
    
            d = new Date();
    
            System.out.println(d.getTime());        
    
        }    
    
    }
    
    
    

    Du musst jeweils die Dateinamen anpassen und die Laufwerksbuchstaben.

    Die Datei muss auch exestieren.

  17. Hallo,

    ich bins nochmal!

    Ich habe ein kleines Verständigungsproblem bei der Beschreibung der Funktion renameTo() aus File Klasse.

    Many aspects of the behavior of this method are inherently platform-dependent: The rename operation might not be able to move a file from one filesystem to another, it might not be atomic, and it might not succeed if a file with the destination abstract pathname already exists. The return value should always be checked to make sure that the rename operation was successful.

    Meinen die mit filesystem z.B.: FAT -> NTFS und umgekehrt. Bzw. EXT3 -> EXT2, ... ?

    Oder meinen die Jungs von Sun damit die Laufwerke?

    Ich habe es probiert und es klappt eigentlich zwischen den Laufwerken.

    Gruß diesy.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...