ChangeEvent

P

Polo488

Gast
Ich habe Texteditfelder und möchte wenn dort Werte verändert worden sind eine Prüfung vornehmen.

Java:
	textField.addPropertyChangeListener(new PropertyChangeListener() {
			public void propertyChange(PropertyChangeEvent evt) {
				LoginDialog.this.checkPointButton();
			}
                        /*
			public void stateChanged(ChangeEvent e) {
				LoginDialog.this.checkPointButton();
			}*/
		});

das Event wird nur beim Erzeugen der Elemente aufgerufen. Die auskommentierte Funktion, funktioniert auch nicht korrekt.
 
P

Polo488

Gast
Danke, warum geht das nicht

Java:
		JScrollPane Scroll = new JScrollPane(tree);
		frmSqlcomm.getContentPane().add(Scroll);
		frmSqlcomm.getContentPane().add(tree);

also will einem jtree eine scrollbar hinzufügen
 
P

Polo488

Gast
Habe nun auch folgendes versucht was nichts geholfen hat, jtree ist noch ohne scrollbar


Java:
JScrollPane Scroll = new JScrollPane(tree);
		JScrollBar Sbar = new JScrollBar(JScrollBar.VERTICAL );
		Scroll.setVerticalScrollBar(Sbar);
		Scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
                Scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
		frmSqlcomm.getContentPane().add(Scroll);
		frmSqlcomm.getContentPane().add(tree);
 
P

Polo488

Gast
Also so rum zeigt er den tree nicht mehr an

Java:
		frmSqlcomm = new JFrame();
		frmSqlcomm.setTitle("SQLCoMM");
		frmSqlcomm.setBounds(100, 100, 800, 600);
		frmSqlcomm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frmSqlcomm.getContentPane().setLayout(null);
		
		JToolBar toolBar = new JToolBar();
		toolBar.setFloatable(false);
		toolBar.setBounds(0, 0, 784, 27);
		frmSqlcomm.getContentPane().add(toolBar);
		
		JTree tree = new JTree();
		tree.setModel(new DefaultTreeModel(
           this.buildTree()
		));
		tree.setBounds(10, 38, 243, 513);
		frmSqlcomm.getContentPane().add(tree);
		frmSqlcomm.getContentPane().add(new JScrollPane(tree), BorderLayout.CENTER);

und so rum den tree aber immer noch keine Scrollbar
Java:
		frmSqlcomm = new JFrame();
		frmSqlcomm.setTitle("SQLCoMM");
		frmSqlcomm.setBounds(100, 100, 800, 600);
		frmSqlcomm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frmSqlcomm.getContentPane().setLayout(null);
		
		JToolBar toolBar = new JToolBar();
		toolBar.setFloatable(false);
		toolBar.setBounds(0, 0, 784, 27);
		frmSqlcomm.getContentPane().add(toolBar);
		
		JTree tree = new JTree();
		tree.setModel(new DefaultTreeModel(
           this.buildTree()
		));
		tree.setBounds(10, 38, 243, 513);
	        frmSqlcomm.getContentPane().add(new JScrollPane(tree), BorderLayout.CENTER);
		frmSqlcomm.getContentPane().add(tree);
 

Michael...

Top Contributor
Eine Komponente kann nur einmal verbaut sein - der der sie als letztes verbaut gewinnt.
Ausserdem dieses besch... NullLayout....
Wenn man schon das NullLayout verwendet, dann muss man auf den entscheidenen Kompenten Position und Größe definieren.
In folgenden Zeilen sehe ich auf Anhieb drei Fehler - mit mehr oder weniger Auswirkungen:
Java:
tree.setBounds(10, 38, 243, 513);
frmSqlcomm.getContentPane().add(tree);
frmSqlcomm.getContentPane().add(new JScrollPane(tree), BorderLayout.CENTER);
Besser:
Java:
JScrollPane pane = new JScrollPane(tree);
pane.setBounds(10, 38, 243, 513);
frmSqlcomm.getContentPane().add(pane);
 
P

Polo488

Gast
Okay danke, er überdeckt zwar mit der Einstellung alles aber das bekomme ich schon konfiguriert, muss ich jetzt nun noch ein Scrollbar Objekt erzeugen damit man scrollen kann weil jetzt zeigt er nur eine Grauefläche an
 

Michael...

Top Contributor
Wenn Du Dir die Mühe machst hier einen kompilierbaren Code (ein KSKB) zu posten, dann mach mich mir in meiner Mittagspause die Mühe diesen auszubessern.

Hier mal ein Bsp. wie es aussehen könnte/sollte:
Java:
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(0, 0, 300, 200);
frame.setLocationRelativeTo(null);
frame.getContentPane().add(new JScrollPane(new JTree()));
frame.setVisible(true);
 
P

Polo488

Gast
Java:
private void initialize() {
		frmSqlcomm = new JFrame();
		frmSqlcomm.setTitle("SQLCoMM");
		frmSqlcomm.setBounds(100, 100, 800, 600);
		frmSqlcomm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frmSqlcomm.getContentPane().setLayout(null);
		
		JToolBar toolBar = new JToolBar();
		toolBar.setFloatable(false);
		toolBar.setBounds(0, 0, 784, 27);
		frmSqlcomm.getContentPane().add(toolBar);
		
		JTree tree = new JTree();
		tree.setModel(new DefaultTreeModel(
           this.buildTree()
		));
		tree.setBounds(10, 38, 243, 513);
		JScrollPane pane = new JScrollPane(tree);
		pane.setBounds(243, 38, 15, 513);
		frmSqlcomm.getContentPane().add(pane);
		frmSqlcomm.getContentPane().add(tree);		
	}
 
P

Polo488

Gast
Also ich habe es nun soweit das er eine scrollbar anzeigt aber sie funktioniert noch nicht

Java:
		JTree tree = new JTree();
		tree.setModel(new DefaultTreeModel(
           this.buildTree()
		));
		tree.setBounds(10, 38, 243, 513);
		JScrollPane pane = new JScrollPane(tree);
	    pane.setBounds(243, 38, 15, 513);
        pane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
		frmSqlcomm.getContentPane().add(pane);
		frmSqlcomm.getContentPane().add(tree);
 

Michael...

Top Contributor
Scrollen geht nur, wenn's was zu Scrollen gibt.

Lass doch mal das tree.setBounds(...) weg. Der soll sich doch nach belieben ausbreiten können.
 
P

Polo488

Gast
Wenn ich das mache ist der Tree nicht mehr sichtbar und breitet sich nicht von alleine aus. Muss ich da ein FLAG setzten? Also habe Testfälle wo es was zu Scrollen gibt, also wo der JTree nicht alle Einträge anzeigt und trotzdem funktioniert diese Scrollbar nicht.


Danke für die Geduld
 
P

Polo488

Gast
So reicht das?:

Java:
import java.awt.BorderLayout;


public class ApplicationFrame {

	private JFrame frmSqlcomm;

	public void Open() {
		try {
			this.frmSqlcomm.setVisible(true);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
    
	//Konstruktor
	public ApplicationFrame() {
		Application.MySqlHdl = new MySQLConnection();
		Application.FrameHdl = this;
		initialize();
	}
	
	//Destruktor
	public void finalize(){
	  this.frmSqlcomm.dispose();	
	  Application.MySqlHdl.finalize();
	}
	
	private DefaultMutableTreeNode buildTree(){
					
		    DefaultMutableTreeNode TreeModel = new DefaultMutableTreeNode(Application.LoginParameters[4]) {
			{
				ResultSet ResultQ = Application.MySqlHdl.getTabels();	
				DefaultMutableTreeNode node_1;
				  try {
						while( ResultQ.next()){
							node_1 = new DefaultMutableTreeNode(ResultQ.getString(1)); 
							add(node_1);
						  }
					  } catch (SQLException e) {
						e.printStackTrace();
					  }

		};
		return TreeModel;
	}

	private void initialize() {
		frmSqlcomm = new JFrame();
		frmSqlcomm.setTitle("SQLCoMM");
		frmSqlcomm.setBounds(100, 100, 800, 600);
		frmSqlcomm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frmSqlcomm.getContentPane().setLayout(null);
		
		JToolBar toolBar = new JToolBar();
		toolBar.setBounds(0, 0, 784, 27);
		toolBar.setFloatable(false);
		frmSqlcomm.getContentPane().add(toolBar);
		
		JTree tree = new JTree();
		tree.setBounds(10, 38, 243, 513);
		tree.setModel(new DefaultTreeModel(
           this.buildTree()
		));
		JScrollPane pane = new JScrollPane(tree, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
		frmSqlcomm.getContentPane().add(pane);
		frmSqlcomm.getContentPane().add(tree);		
	}
}
 
P

Polo488

Gast
sorry die import



Java:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.ScrollPane;

import javax.swing.JFrame;
import java.awt.FlowLayout;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JToolBar;
import javax.swing.JTree;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.DefaultMutableTreeNode;
 

Michael...

Top Contributor
Naja, ist immer noch kein KSKB aber ich habe einfach ein paar Dummy TreeNodes erstellt und Anpassungen in der initialize() Methode vorgenommen und bei mir funktioniert folgender Code:
Java:
package a_trash;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JToolBar;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;

public class ApplicationFrame {

	public static void main(String[] s) {
		new ApplicationFrame().frmSqlcomm.setVisible(true);
	}

	private JFrame frmSqlcomm;

	public ApplicationFrame() {
		initialize();
	}

	private DefaultMutableTreeNode buildTree() {
		DefaultMutableTreeNode root = new DefaultMutableTreeNode();
		for (int i=0; i<10; i++) {
			DefaultMutableTreeNode node = new DefaultMutableTreeNode("AAAAAAAAA");
			for (int k=0; k<10; k++)
				node.add(new DefaultMutableTreeNode("BBBBBBBBBBBBBBBBBBB"));
			root.add(node);
		}
		return root;
	}

	private void initialize() {
		frmSqlcomm = new JFrame();
		frmSqlcomm.setTitle("SQLCoMM");
		frmSqlcomm.setBounds(100, 100, 800, 600);
		frmSqlcomm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frmSqlcomm.getContentPane().setLayout(null);

		JToolBar toolBar = new JToolBar();
		toolBar.setBounds(0, 0, 784, 27);
		toolBar.setFloatable(false);
		frmSqlcomm.getContentPane().add(toolBar);

		JTree tree = new JTree();
		//die Bounds des Tree sind irrelevant 
		//tree.setBounds(10, 38, 243, 513); 
		tree.setModel(new DefaultTreeModel(this.buildTree()));
		JScrollPane pane = new JScrollPane(tree, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
		//Da Null Layout müssen die Bounds des ScrollPane definiert werden, sonst sieht man nichts
		pane.setBounds(10, 38, 243, 513);
		frmSqlcomm.getContentPane().add(pane);
		//Nicht der Tree sondern nur der ScrollPane muss in den Container
		//frmSqlcomm.getContentPane().add(tree);
	}
}
 
P

Polo488

Gast
dank vielen dank

das war der tipp
//Nicht der Tree sondern nur der ScrollPane muss in den Container
 

Michael...

Top Contributor
Das hatte ich eigentlich damit gemeint:
Eine Komponente kann nur einmal verbaut sein - der der sie als letztes verbaut gewinnt.
...
In folgenden Zeilen sehe ich auf Anhieb drei Fehler - mit mehr oder weniger Auswirkungen:
Java:
tree.setBounds(10, 38, 243, 513);
frmSqlcomm.getContentPane().add(tree);
frmSqlcomm.getContentPane().add(new JScrollPane(tree), BorderLayout.CENTER);
Besser:
Java:
JScrollPane pane = new JScrollPane(tree);
pane.setBounds(10, 38, 243, 513);
frmSqlcomm.getContentPane().add(pane);
Naja, Erklären ist nicht unbedingt meine Stärke.:(
 
P

Polo488

Gast
Ach Quatsch, denke eher das es an meiner Unfähigkeit gelegen hat, ich programmiere wirklich schon einige Jahre auch beruflich, Java hat viele Vorteile muss aber sagen das ich mich damit wirklich schwer tue und als Einsteiger-Programmiersprache würde ich es auch nicht empfehlen.
 

Neue Themen


Oben