Designprbleme

Scynja

Mitglied
Hiho, nachdem ich die Grundfunktionen meines Programms geschrieben habe, soll es jetzt etwas verbessert werden in Sachen Grafik und Usability.

Bislang habe ich immer den GUI editor von jigloo genutzt, doch nun komme ich an 2 stellen nicht weiter.

1. Ich will ein Bild auf die Oberfläche bringen (ein Pfeil). In google gibt es zig beiträge dazu, nur kenn ich mich mit dem guiprogrammieren nicht sonderlich gut aus und würde ungern mein Programm dadurch zerschießen. In einem Beitrag bin ich darauf gestoßen, dass man das mit einem Label lösen kann, ich habs versucht... image importier(sowohl jpg als auch gif) nur wie ich dann sehen konnte, sah ich nichts. Ist das Problem prinzipiell mit einem Label lösbar?

nun zum 2ten Problem: Meine Oberfläche ist so aufgebaut, dass man ein Suchbegriff eingibt und dann das Ergebnis+einige Zusatzinformationen in Form von jLabel1.text=... dargestellt werden. Ich würde gerne dem Nutzer die Möglichkeit einräumen, auf dieses Suchergebnis Linkszuklicken - und das dann per drag&drop in die Suchleiste reinzuziehen. (ohne markieren etc.) Gibt es da schon vorgefertigte Lösungen? oder nach was sollte ich googeln?

Ich hoffe ich konnte mich klar ausdrücken x.x

mfg Scynja
 

Hachmed

Aktives Mitglied
Zu Punkt 1 würde es helfen, wenn man den Code sehen könnte, wo das Bild dargestellt werden soll.

Also prinzipiell ist es wohl die beste Methode, das Bild mit einem JLabel darzustellen.
Ich könnte nur raten, wo da das Problem liegt...
Post doch mal den Codeausschnitt
 
B

bERt0r

Gast
1. z.B:
Java:
JLabel jl1=new JLabel(new ImageIcon("pfeil.jpg"));
2. MouseListener auf label adden, auf mouseDragged horchen.
MouseEvent.getSource liefert immer den Component, auf den geklickt wurde, in dem Fall das JLabel.
MouseEven.getPoint liefert dir den Punkt, auf dem die Maustaste ausgelassen wurde.
Du musst jetzt überprüfen ob der Punkt innerhalb deiner Suchleiste liegt (contains).
 

truesoul

Top Contributor
nun zum 2ten Problem: Meine Oberfläche ist so aufgebaut, dass man ein Suchbegriff eingibt und dann das Ergebnis+einige Zusatzinformationen in Form von jLabel1.text=... dargestellt werden. Ich würde gerne dem Nutzer die Möglichkeit einräumen, auf dieses Suchergebnis Linkszuklicken - und das dann per drag&drop in die Suchleiste reinzuziehen. (ohne markieren etc.) Gibt es da schon vorgefertigte Lösungen? oder nach was sollte ich googeln?

Vielleicht sowas : Demo - ChooseDropAction (The Java™ Tutorials > Creating a GUI With JFC/Swing > Drag and Drop and Data Transfer) :)
 
Zuletzt bearbeitet:

Scynja

Mitglied
Hallo und danke für die Antworten=)

das mit der Grafik einbinden hat geklappt (ich hatte sie nur in den Ordner kopiert, nicht importiert- wird nicht wieder vorkommen), jetzt stellt sich für mich die Frage, ob Java von Haus aus Optionen wie Bild strecken etc. unterstützt. (damit Bilder auch dynamisch mit dem Label wachsen können)

@bERt0r
Ich habe das mit dem Mauslistener ausprobiert:
Java:
    private void jLabel5MouseDragged(MouseEvent evt) {
     	if ((jLabel5.getText()).equals(""));
    	else{
    	if(jTextField1.contains(evt.getPoint())==true){
    		jTextField1.setText(jLabel5.getText());
    	}}
    
    }

Das Textfeld:
Java:
	jTextField1.setBounds(22, 12, 178, 20);
Das Label:
Java:
jLabel5.setBounds(362, 277, 184, 52);

Beide Komponenten sind (zumindest optisch) bestimmt 15 cm voneinander entfernt. Leider reicht schon eine einfache Mausbewegung(1-2cm Weg) in die ungefähre Richtung des Suchfeldes aus um den Text zu ändern (man muss sie nichtmal loslassen). In diesem Fall ist das jetzt nicht weiter tragisch, aber ich wär trotzdem dankbar, falls mir jemand sagen kann, warum er so ungenau reagiert. (ein Workaround wär vielleicht beim dragged die Variable zwischenzuspeichern und dann beim event mouse released beim Textfeld die variable abzufragen? oder ist das die gängige Lösung?)

Und da alle guten Dinge 3 sind, möchte ich an der Stelle nocheinmal nachfragen, ob man die Füllgröße von Textareas abfragen kann. Ich möchte unter dem geschriebenen Text eine Grafik anbinden, die möglichst nach der letzten beschriebenen Zeile beginnen soll. Mein Ansatz ist Momentan, mir die Stringlänge ausgeben zu lassen und dann auf gut Glück zu schätzen. (Schließlich hängt die Textlänge von der Wortlänge ab wegen den Zeilenumbrüchen)
 

Oben