Zum Inhalt springen

Morbid_Soul

Mitglieder
  • Gesamte Inhalte

    82
  • Benutzer seit

  • Letzter Besuch

Beiträge von Morbid_Soul

  1. Hallo,

    erstmal sry für den Threadtitel... Ich weiß nicht wie ich das prägnant ausdrücken kann.

    Ich schreibe momentan eine Anwendung. Das ganze soll mal ein Editor werden, um 2D Spiele erstellen zu können.

    Innerhalb der Anwendung möchte ich nun z.B. mehrere Projekte anlegen und verwalten können. Im Prinzip soll das ganze wie z.B. im JBuilder funktionieren.

    Wenn man innerhalb der Anwendung nun ein neues Projekt erstellt oder zwischen verschiedenen Projekten hin- und herschaltet müssen ja verschiedenste Bereiche in der Anwendung aktualisiert werden etc.

    Dazu sind mir 2 Möglichkeiten eigefallen.

    1) Mit Referenzen und Methoden alles irgendwie durchschleifen und die relevanten Objekte und Bereiche anpassen.

    2) Mit selbstgeschriebenen Listenern arbeiten. Listenerklassen können erstellt und zu einem Projektmanager geadded werden. Der Projektmanager feuert dann bei Ändernungen einen relevanten Event an die relevante ListenerMethode. Die ausimplementierten Listenerklassen machen dann die relevante Arbeit.

    Ich habe mich für die 2 Methode entschieden, da ich sie übersichtlicher finde.

    Könnt ihr mir vielleicht noch Alternativen oder Designmuster nennen die sich auch mit diesem Thema befassen?

    Ich hoffe ich konnte mich verständlich machen.

    Danke und Grüße,

    Peter

  2. Hi,

    es macht nichts, dass der Renderer nur für bestimmte Spalten o.Ä. registriert wird. Du kannst die Klasse

    DefaultTableCellRenderer
    und in ihr die Methode
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)

    überschreiben und in der implementierung dafür sorgen, dass die gesamte Zeile farbig wird. Habe ich auch so gemacht.

    Gruß, Peter

  3. Hi,

    ist ein Schuß ins Blaue... Ich glaube im Tree wird das angezeigt, was die "toString()"-Methode liefert. Diese Methode greift auf die "toString()"-Methode des UserObjects zuürck, also des Objects, welches als Referenz an den TreeNode übergeben wurde.

    Demnach könnte die Änderung an der Anzeige funktionieren, wenn Du das UserObject so manipulierst, dass die "toString()"-Methode etwas anderes anzeigt.

    Ist aber geraten, sry...

    Gruß, Peter

  4. Hi,

    >>Wie kann ich jetzt von der innerclass auf eine Methode dieses Interfaces zugreiffen?

    Du willst bestimmt auf die "Outerclass" zugreifen? Dass erreichst du, in dem du der innerclass eine Referenz der Outerclass mit übergibst.

    >>bzw wie bekomme ich eine expliziete Referenz der Outerclass von der Innerclass?

    Sry, den Satz habe ich nicht verstanden. :/

    Ich habe aber das Gefühl, dass bei Dir das Desing vielleicht nicht stimmt.

    Was versuchst Du in der Klasse abzubilden? Weißt Du wozu Interfaces da sind? Musst Du überhaupt mit inneren Klassen arbeiten? ;)

    Gruß, Peter

    [edit] Formatierung [/edit]

  5. Hi,

    sry aber ich kann mir leider noch immer kein Bild von dem Problem machen...

    Vielleicht kannst Du eine Klasse bauen und ihr die Suchparameter übergeben. Anhand der Suchparameter kann diese Klasse vielleicht versuchen die Suche zu deligieren. Da kann man bestimmt auch was mit abstrakten Methoden machen oder etwas in der Art.

    Gruß

  6. Hi,

    wie Du schon bemerkt hast, tut der Konstruktor von JTextfield nicht das was du erwartet hast. Soweit ich weiß, dient der Konstruktor nur dazu, dass das Textfeld seine gewünschte Größe innerhalb eines GridLayouts kennt.

    Wie Du es anzeigen lässt, dass es nur die Breite für 6 Zeichen anzeigt hängt vom Layout das du verwendest ab. (Breite wäre nur bei Schriften wie Courier fix?)

    Die Klasse JTextFieldLimit diu Du da verwendest sollte allerdings funktionieren. Habe sie jetzt nicht kopiert und ausprobiert, nehme aber mal an, dass sie zuverlässig funktioniert.

    Bist Du dir sicher, dass Du sie fehlerfrei in Deinen Source übernommen hast? ;)

    Eigentlich sollte kein Text gelöscht werden. Das das textfeld keinen Text anzeigt, könnte daran liegen, dass der Text der eingefügt werden soll länger als 6 Zeichen ist. Wie befüllst Du das Textfeld? Nur durch manuelle Eingaben? Wird das mit Werten aus einer DB oder einer File gefüllt? Hängen da vielleicht Leerzeichen dran oder so? (Eventuell vorher String.trim() verwenden o.ä.)

    Gruß, Peter

  7. Hi!

    Mh, klingt komisch was Du da vor hast, aber weiß ja auch nicht was da gemacht werden soll. ;)

    Du kannst bestimmt ein PopUpMenu für das Label registrieren und darin den Text auslesen....

    Oder einfach einen MouseListener auf das Label setzen und bei nem Rechtsklick den Wert in eine Variable speichern... Ist bestimmt nicht die Stylolösung, sollte aber funktionieren. :)

    Gruß, Peter

    [edit]

    http://www.dpunkt.de/java/Programmieren_mit_Java/Oberflaechenprogrammierung/24.html

    [/edit]

  8. Hi,

    bist Du dir sicher, dass es nur mit einer JList geht und vielleicht nicht auch mit

    einer JTable z.B.?

    Ansonsten hast du auch die Möglichkeit die Bestellpositionen z.B. auf einem Dialog, oder einem Panel/einer selbsgeschriebenen Komponente zu erfassen und nach dem Speichern die erzeugte Bestellposition einfach in eine Liste einzufügen. Das es also in der JList selber keine editierbare Zeile gibt...

    Gruß, Peter

  9. Moin,

    bist du sicher das er den Batch nicht ausführt?

    Verwende ansonsten mal die Methode waitFor() vom Process-Objekt, um auf das Batchende zu warten...

    Gruß, Peter

  10. Mh... Wieso willst Du das in einer JTable anzeigen? Sollen die Zeichenkette noch nach irgendetwas getrennt werden, sprich brauchts du mehrere Spalten oder willst du nur jeweils eine Spalte mit der Zeichenkette drin haben?

    Auf jeden Fall kannst Du dir mal die Konstruktoren vom JTable oder vom DefaultTableModel angucken....

    Gruß, Peter

  11. Moin,

    die Information das das mit dem Interface "FilenameFilter" geht hast du ja schon.

    Guck Dir mal die Methode an, die im Interface definiert ist. Die musst Du implementieren. Du erhälst den Namen der Datei und kannst, wenn es eine dnl-Datei ist entsprechend true oder false zurückgeben.

    Der File-Methode list() kannst Du dann glaube ich diesen Filter übergeben. (Also z.B. eine Klasse die den Filter implementiert)

    Du kannst auch die Klasse, in der Du diese Operation machst, das Interface implementieren lassen und dann in der List-Methode "this" angeben. (Finden wahrscheinlich einige Leute unsauber ;) ) Weißt Du ungefähr was ich meine? Habe mich nen bischen verkorkst ausgedrückt...

    Gruß, Peter

  12. Die Klasse Calendar ist abstrakt. Du kannst daher keine neue Instanzen der Klasse mit dem new-Operator erzeugen. So kannst Du dir ein Calendar-Objekt holen:

    
    java.util.Calendar datum = Calendar.getInstance();
    
    

    Das ist ein Beispiel für einen Stacktrace:

    java.lang.NullPointerException

    at de.xxx.xxx.xxx.xxx.xxx.HobbiesWaehlenDialog.bOk_actionPerformed(HobbiesWaehlenDialog.java:144)

    at de.xxx.xxx.xxx.xxx.xxx.HobbiesWaehlenDialog_bOk_actionAdapter.actionPerformed(HobbiesWaehlenDialog.java:181)

    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1764)

    at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1817)

    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:419)

    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:257)

    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:245).......

    ;)

  13. Mh, vielleicht musst Du die Klasse noch importieren?

    
    import java.util.Calendar;
    
    
    Ein
    
    import java.util.Date;
    
    
    müsste da ja schon stehen... Wenn in der Klasse aber ein
    
    import java.util.*;
    
    

    steht, weiß ich jetzt auf die schnelle auch nichts. Das würde nämlich bedeuten, dass er bereits alle Klassen aus dem genannten Package importiert hat (inkl. Calendar).

    Gruß, Peter

  14. Moin!

    Na ja, das solange die Anwendung geladen wird halt ein Bild angezeigt wird.

    Das lässt sich relativ einfach machen. Einfach bei Goggle nach "java splash screen" suchen. Dann kommen schon ein paar Beispiele. Hat den Nachteil, dass wiederum ein Bild übertragen werden muss, macht den Kohl dann aber auch nicht fett?

    ProgressBar wäre auch ne Möglichkeit, kann ich aber jetzt spontan nichts zu sagen.

    Und andere Wege Code zu sparen, fallen mir jetzt auch nicht ein.

    Gruß, Peter

  15. Hallo,

    ich habe folgendes Problem:

    Ich habe einen Dialog.

    Dieser Dialog hat einen "OK"-Button.

    Über Input-/ActionMap habe ich dem Button eine Action zugewiesen, die beim Drücken der Taste "Enter" ausgeführt wird.

    Weiterhin habe ich verschiedene Textfelder im Dialog. Ein Feld zeigt ein JPopupMenu an, um Werte vorzugeben. Die Erstellung des Menüs und die Anzeige, geschieht in einem KeyListener, der auf dieses Feld horcht.

    Wenn ich nun einen Menüpunkt mit Enter auswähle, wird ebenfalls die Action des "OK"-Buttons ausgelöst (Was mich natürlich auch nun nicht weiter wundert). Rufe ich aber nun am Ende meiner Implementierung von keyReleased die consume() Methode des KeyEvents auf, wird trotzdem die Action des Buttons ausgelöst.

    Nun meine Frage: Wie kann ich verhindern, dass das Wählen eines Menüpunkter per Enter auch die Action des Buttons auslöst?

    Danke und Gruß, Peter

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...