wieder mal ein prob mit dnd

Status
Nicht offen für weitere Antworten.

xeon

Mitglied
hi @ all!

ich hab da n kleines problem.
hab mich auch durch die forensuche und google gekämpft und annährend brauchbare sachen
gefunden, die ich allerdings doch nicht verwenden kann... :(

also - ich schreibe gerade eine kleine anwendung bei der ein template eingelesen wird
und somit eine dynamische anzahl an hosts in meine klasse Hosts geschrieben wird.
zusätzlich dazu gibbets auch noch x,y - koordinaten und n gif zu laden.

jedes objekt, also jeder host, ist bei mir durch ein extra panel dargestellt, das das gif und
eine description beinhaltet. diese einzelnen panels liegen wiederum auf einem panel, welches
meine frame ausfüllt.

jetzt würde ich gerne per gedrückter maustaste die einzelnen panels auf meinem main-panel
verschieben, kriegs aber leider nich hin.

I'am a real gui-noob :(

wär nett, wenn einer helfen kann.

greetz! xeon
 

Wildcard

Top Contributor
Es würde helfen wenn du sagst wo du konkret Probleme hast.
Mit Panels ist das allerdings etwas ungünstig, weil es seltsam aussieht wenn man Panels übereinander schiebt.
Vieleicht sind JInternalFrames die bessere Wahl...
 

xeon

Mitglied
also ich schreibe das halt ausschließlich unter awt...

ich denk ich könnt auch labels nehmen!? ???:L

mein problem liegt darin, dass ich keinen ansatz finde...

Hier initialisere ich ArrayLists für die jeweiligen Typen. (Host = list)
hab ich am anfang etwas ungünstig gewählt... ;)

Code:
public class MainPanel extends Panel

        ArrayList list;
	ArrayList hostGList;
	ArrayList serviceList;
	ArrayList serviceGList;
	Host h;
	HostGroup hgl;
	Service se;
	ServiceGroup sgl;

        public MainPanel() {
		
		setLayout(new BorderLayout());
		setBackground(Color.WHITE);
		
		list = new ArrayList();
		hostGList = new ArrayList();
		serviceList = new ArrayList();
		serviceGList = new ArrayList();

        }

                ....
                ....
                ....

        //Hier werden die Panels angelegt
	public void drawIt() {
		
		for(int i = 0; i < list.size(); ++i)
			super.add((Host)list.get(i));
		
		for(int i = 0; i < hostGList.size(); ++i)
			super.add((HostGroup)hostGList.get(i));
		
		for(int i = 0; i < serviceList.size(); ++i)
			super.add((Service)serviceList.get(i));
		
		for(int i = 0; i < serviceGList.size(); ++i)
			super.add((ServiceGroup)serviceGList.get(i));
		
	}

        //Hier steht dann mein einlesestrom..
        //und dann äqivalent zu den anderen objekten von mir:
        list.add(new Host(hostname, img, pos_X, pos_Y));

}

dann habe ich hier meine Klasse Host, sehen alle fast gleich aus...

Code:
public class Host extends Panel {
	
	String hostname;
	Image img;
	int pos_x;
	int pos_y;
	
	public Host(String host, Image i, int x, int y) {
		
		img = i;
		hostname = host;
		pos_x = x;
		pos_y = y;
		
		this.setBounds(x,y,175,36);
		
	}

    public void paint(Graphics g) {
		
		if(img != null)
			g.drawImage(img, 0, 0, this);
				
		g.drawString(hostname, 25, 14);
	}
	
}
[/code]
 

Wildcard

Top Contributor
Generell kannst du das mit einem MouseMotionListener machen. Die Frage ist halt wie das 'verschieben' dann später aussehen soll?
Gibts einen Grund warum du AWT benutzt?
 

xeon

Mitglied
also swing hat mich generell etwas abgeschreckt, weil selbst die paint(..) bzw. paintComponent(..) bei mir mein panel sehr verunstaltet hat. quasi wurde das fenster angezeigt, was hinter dem panel lag - firefox z.b. ;)

deswegen hatte ich erstma auf awt umgestellt, wo's dann auch problemlos ging.
wollte es evtl später wieder über swing laufen lassen. - jetzt allerdings glaube ich, dass ich vllt einfach nochmal gucken
sollte, warum dies alles nicht so richtig geklappt hat und es vllt doch schon früher mache. :mrgreen:

vielen dank erstma für deine antwort.

denke, ich werde es auch über nen FocusListener und MouseMotionListener laufen lassen.

hast du ne ahnung, woran das liegen könnte, dass meine paint(..) unter swing so verrück gespielt hat? hats die probs schon öfter bei anderen leutz gegeben?

greetz! xeon
 

Wildcard

Top Contributor
1. in Swing nur paintComponent überschreiben
2. super.paintComponent aufrufen
3. kein AWT in Swing einbauen
dann klappts auch :wink:
 

xeon

Mitglied
sooo wildcard, :-D

hab mir jetzt alles in swing umgebaut und mich einige zeit mit JScrollPane rumärgern müssen,
aber jetzt funktioniert soweit alles.

nun kommt allerdings wieder das dnd ins spiel.

hab soweit schon mal erreicht, dass er mir nen host neu platziert, wenn ich ihn verschiebe.
problem, er platziert ihn anscheinend recht willkürlich und auch nur 1 mal. dann wars das...

vllt hast du oder jemand anders hier ja noch ne idee?

meine hosts:

Code:
public class Host extends JLabel {
	
	String hostname;
	Image img;
	int pos_x;
	int pos_y;
	boolean focus = false;
	
	public Host(String host, Image i, int x, int y) {
		
		img = i;
		hostname = host;
		pos_x = x;
		pos_y = y;
		
		setBounds(x,y,175,36);
		
		addMouseMotionListener(new MouseMotionAdapter() {
			
			Host tmp;
			
			public void mouseMoved(MouseEvent me) {
				
				System.out.println("X: " + me.getX() + "\tY: " + me.getY());
				tmp.pos_x = me.getX();
				tmp.pos_y = me.getY();
				
			}
			
			public void mouseDragged(MouseEvent me) {
				
				System.out.println(me.getSource());
				System.out.println("PRESSED");
				
				tmp = (Host)me.getSource();
				
			}
			
		});
				
	}
.......
.......

und das panel:

Code:
public MainPanel() {
		
		setBackground(Color.WHITE);
		setSize(500,500);
		
		list = new ArrayList();
		hostGList = new ArrayList();
		serviceList = new ArrayList();
		serviceGList = new ArrayList();
		
		addMouseListener(new MouseAdapter() {
			
			public void mousePressed(MouseEvent me) { }
			
			public void mouseReleased(MouseEvent me) {
				
				drawIt();
				
			}
			
		});
	
	}
	
	public Dimension getPreferredSize() {
	
		return new Dimension(super.getWidth(), super.getHeight());
		
	}
	
	public void drawIt() {
		
		for(int i = 0; i < list.size(); ++i)
			super.add((Host)list.get(i));
		
		for(int i = 0; i < hostGList.size(); ++i)
			super.add((HostGroup)hostGList.get(i));
		
		for(int i = 0; i < serviceList.size(); ++i)
			super.add((Service)serviceList.get(i));
		
		for(int i = 0; i < serviceGList.size(); ++i)
			super.add((ServiceGroup)serviceGList.get(i));
		
	}
......
.....
...

geh ich da zumindest schon ma richtig ran? - bzw. hat jemand ne idee, wie ich die labels besser (richtig) verschieben kann?

vllt so, dass ich den positionsunterschied bereits während des verschiebens sehe!? ;)

greetz! xeon
 

Wildcard

Top Contributor
Code:
   public void drawIt() {
      
      for(int i = 0; i < list.size(); ++i)
         super.add((Host)list.get(i));
Was soll denn das? Du willst die Labels doch verschieben und nicht jedes mal adden?
Ich Frag nochmal, warum keine JInternalFrames? Das sieht doch viel sauberer aus...
 

xeon

Mitglied
haste halt vollkommen recht - und JInternalFrame hab ich jetz auch eingebunden. is wirklich einfacher.

nur: macht es einen unterschied, wenn ich die anstatt aufn desktop, in nen panel einbinde?

weil: wenn ich jetz eine verschiebe, bleibt auf der stelle noch eine - kann ich unendlich oft machen. :-D
musst dir jetz auch nich extra überlegen. ich guck morgen erst nochma in die forensuche, wollt dir nur
erstma antworten!

echt vielen dank! - hast mir jetz x min arbeit erspart ;)
 

Wildcard

Top Contributor
xeon hat gesagt.:
nur: macht es einen unterschied, wenn ich die anstatt aufn desktop, in nen panel einbinde?

weil: wenn ich jetz eine verschiebe, bleibt auf der stelle noch eine - kann ich unendlich oft machen. :-D
Das geht nicht auf Panels. Kannst du das mal auf deutsch erklären :bahnhof:
 
G

Guest

Gast
k - die klasse, die zuerst ein JPanel war, erbt jetzt von JDesktopPane.

das ding ist, dass er mir die JInternalFrames zwar zeichnet, doch wenn ich eine verschieben will,
bleibt die originalframe da und ich verschiebe quasi nur eine kopie vom original.
diese kopie kann ich dann allerdings richtig verschieben.

wenns dir hilft, kann ich - wenn ich nach hause komme den code nochma posten!? - alles sehr eigenartig.
swing einstieg is doch nich so einfach ;)
 

xeon

Mitglied
so - war zeitlich etwas knapp....

musste noch n paar übungen für uni fertig machen ;)

das alte prob hab ich nich mehr, hab meine hosts (etc) jetzt direkt von JInternalFrame
erben lassen. naja... obs jetz elegant is!? :D

also, ich hab die files ma gepackt und auf:
http://www.xeon-home.de/downloads/ConfiX.tar.gz
gestellt.

wär kewl, wenn du bei gelegenheit ma gucken könntest. eilt aber nich! ;)

greetz! XeoN

EDIT:
zuerst open Image -> demo.png
danach open config -> demo.cfg
 

xeon

Mitglied
ok - problem gelöst...

ich hätte vllt mal die ganze Host.java hier posten sollen, denn dadrin hatte ich mir selbst methoden getX() und getY() geschrieben.
konnte ja keiner ahnen, das JInternalFrame über die die position ermittelt ;)

trotzdem danke für die mühen!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
richis-fragen Wie kann man den RowSorter dazu bringen die ursprünglich liste wieder anzuzeigen. AWT, Swing, JavaFX & SWT 28
J Eingaben aus Textfield & ComboBox speichern und in ComboBox wieder ausgeben AWT, Swing, JavaFX & SWT 3
B Text mit Absatz + OK-Button, der Fenster wieder schließt AWT, Swing, JavaFX & SWT 7
J JOptionPane ruft sich selbst immer wieder neu auf AWT, Swing, JavaFX & SWT 3
R JOptionPane schließt sich nicht wieder AWT, Swing, JavaFX & SWT 2
S Swing Mal wieder JTable Ansicht aktualisieren AWT, Swing, JavaFX & SWT 10
C Memory Karten nach Paar offen bleiben sonst wieder umdrehen AWT, Swing, JavaFX & SWT 1
C Benutzername in GUI eingeben und nach Spiel neues Fenster Benutzername wieder anzeigen AWT, Swing, JavaFX & SWT 1
T SWT Mysql Tabelle zeigt immer nur den ersten Wert immer wieder an AWT, Swing, JavaFX & SWT 3
X AWT Text der mit Graphics "drawString(...)" geschreiben wurde wieder löschen. AWT, Swing, JavaFX & SWT 6
F Swing Java Swing Array in Datei und wieder raus AWT, Swing, JavaFX & SWT 7
A Swing Paint mit Button Clear den Hintergrund säubern um wieder zeichnen zu können AWT, Swing, JavaFX & SWT 2
M Java anwendung VOR vollbildspielen (schon wieder...) AWT, Swing, JavaFX & SWT 5
P jframe setVisible(false) wieder sichtbar machen? AWT, Swing, JavaFX & SWT 4
B Swing Repaint Problem - mal wieder AWT, Swing, JavaFX & SWT 5
A jformattedtextfield unsichtbar und wieder sichtbar machen AWT, Swing, JavaFX & SWT 13
J Swing Fenster lässt sich nach Schließung nicht wieder öffnen AWT, Swing, JavaFX & SWT 4
O JTable zeigt die alte Daten wieder AWT, Swing, JavaFX & SWT 23
A AWT Nach dem generieren von bildern verschwinden diese wieder AWT, Swing, JavaFX & SWT 9
J Mal wieder Probleme mit paintComponent AWT, Swing, JavaFX & SWT 3
C SWT CTabItem wieder sichtbar machen AWT, Swing, JavaFX & SWT 3
C Schon wieder JTable AWT, Swing, JavaFX & SWT 7
GUI-Programmer Wieder ne Layout Frage AWT, Swing, JavaFX & SWT 11
R Komponente wieder entfernen AWT, Swing, JavaFX & SWT 13
E wieder einmal JTable AWT, Swing, JavaFX & SWT 5
A Fokus wieder in ein JTextField setzen AWT, Swing, JavaFX & SWT 4
L Buttons aus Arrayliste erstellt wie komm ich nun wieder an das Oobjekt aus der arrayliste ran AWT, Swing, JavaFX & SWT 3
Z Swing Buttons wieder entfernen vom Bildschirm AWT, Swing, JavaFX & SWT 5
O Swing JButton werden richtig gewechselt aber die Maus macht die alten wieder Sichtbar?? AWT, Swing, JavaFX & SWT 5
N gezeichnete Graphiken speichern und wieder anzeigen AWT, Swing, JavaFX & SWT 8
hdi SWT Operation auf GUI-Komponente kommt mal wieder nicht an... AWT, Swing, JavaFX & SWT 9
Ollek Swing JPnales nach bestimmtenVorgang wieder anzeigen AWT, Swing, JavaFX & SWT 4
P Swing Hintergrundfarbe auslesen und wieder setzen AWT, Swing, JavaFX & SWT 4
M AWT Zurücksetzbutton, wieder auf das original Bild AWT, Swing, JavaFX & SWT 3
S ProgressBar newRunnable (schon wieder!) AWT, Swing, JavaFX & SWT 9
M Fenster nach minimierung zum tray wieder öffnen AWT, Swing, JavaFX & SWT 3
E Swing Wieder ein Bild einfügen AWT, Swing, JavaFX & SWT 2
P schon wieder schlange AWT, Swing, JavaFX & SWT 8
Luy Per TAB-Taste aus TextArea wieder raus? AWT, Swing, JavaFX & SWT 5
D Swing JMenu wieder schließen lassen AWT, Swing, JavaFX & SWT 7
F JFileChooser mal wieder AWT, Swing, JavaFX & SWT 2
B Wie kann ich ein event wieder beseitigen AWT, Swing, JavaFX & SWT 2
hdi Swing mal wieder EDT -> nichts passiert AWT, Swing, JavaFX & SWT 20
S Feintuning, mal wieder Threading + swing ... AWT, Swing, JavaFX & SWT 8
P JTable...mal wieder AWT, Swing, JavaFX & SWT 7
S JDialog startet immer wieder neu AWT, Swing, JavaFX & SWT 2
A Wie werde ich beim JTable die Selection wieder los? AWT, Swing, JavaFX & SWT 6
PAX Iconified JFrame per Code wieder anzeigen lassen (deiconify) AWT, Swing, JavaFX & SWT 2
T Mal wieder Swing GUI AWT, Swing, JavaFX & SWT 7
hdi repaint() mag mal wieder nicht. AWT, Swing, JavaFX & SWT 9
T JCheckBox deselektieren (Haken wieder entfernen) - wie? AWT, Swing, JavaFX & SWT 5
M ich will die alten "alte JButtons"wieder haben AWT, Swing, JavaFX & SWT 6
G Ein jTextField im laufe das Programmes immer wieder updaten AWT, Swing, JavaFX & SWT 2
G wieder mal das leidige thema listener AWT, Swing, JavaFX & SWT 3
G Drag and Drop mal wieder? AWT, Swing, JavaFX & SWT 2
C JTable. Mal wieder AWT, Swing, JavaFX & SWT 10
T Ich komme mal wieder nicht mit Swing und Image klar. AWT, Swing, JavaFX & SWT 5
G SWT Toolbar: Toolitem entfernen und wieder hinzufügen AWT, Swing, JavaFX & SWT 16
M wieder einmal JScrollPane und JList AWT, Swing, JavaFX & SWT 4
S getSize gibt keine Größe wieder AWT, Swing, JavaFX & SWT 4
T Linien zeichnen und wieder löschen AWT, Swing, JavaFX & SWT 9
Z Und schon wieder die Linien (Problem beim überzeichnen) AWT, Swing, JavaFX & SWT 4
V mal wieder das gute alte gridbaglayout AWT, Swing, JavaFX & SWT 4
W JTabele Aktualisieren - Wieder einmal AWT, Swing, JavaFX & SWT 4
B Schon wieder ein Problem mit paintComponent(). AWT, Swing, JavaFX & SWT 2
S JScrollPane mal wieder AWT, Swing, JavaFX & SWT 2
R JLabel Icon wieder entfernen AWT, Swing, JavaFX & SWT 4
A Wieder einmal Event-Dispatch-Thread AWT, Swing, JavaFX & SWT 5
R Mal wieder JTable AWT, Swing, JavaFX & SWT 11
I JProgressBar String anzeigen, danach wieder normale Ansicht AWT, Swing, JavaFX & SWT 3
G mal wieder table. AWT, Swing, JavaFX & SWT 3
Luma Alle Fenster verstecken und wieder sichtbar machen? AWT, Swing, JavaFX & SWT 6
S JFrame minimieren und wieder herstellen AWT, Swing, JavaFX & SWT 2
J Spalte in JTable aus- und wieder einblenden AWT, Swing, JavaFX & SWT 10
R Anonymen CaretListener wieder entfernen AWT, Swing, JavaFX & SWT 4
G JTabbedPane: Tabs verschwinden lassen und wieder anzeigen AWT, Swing, JavaFX & SWT 3
G TableModel von JTable wieder entfernen AWT, Swing, JavaFX & SWT 10
juppi JFrame will nicht wieder verschwinden AWT, Swing, JavaFX & SWT 2
K Und schon wieder JInternalFrame AWT, Swing, JavaFX & SWT 2
S Wieder eine Frage zu javax.swing.text AWT, Swing, JavaFX & SWT 2
A Prob:Tabelle bei Zellensprung: Letzte zeile doppelt sichtbar AWT, Swing, JavaFX & SWT 7
Gentle KeyListener + ActionListener + AdjustmentListener -> Prob AWT, Swing, JavaFX & SWT 8
S JColorChooser Prob mit Ok/Abbr. AWT, Swing, JavaFX & SWT 3
M Prob. beim dynamischen Erzeugen v. Obj! AWT, Swing, JavaFX & SWT 11
S JFrame prob unter linux AWT, Swing, JavaFX & SWT 4
G Prob mit 2 Klassen und set Methode AWT, Swing, JavaFX & SWT 6
G Prob mit JTable AWT, Swing, JavaFX & SWT 4
O Prob, wenn JTree einem JScrollPane hinzufüge! AWT, Swing, JavaFX & SWT 2
G Graphics (g) und JComponent prob. AWT, Swing, JavaFX & SWT 2
B prob mit abgeleitetem JButton AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen


Oben