Hi leute!
Wir haben ein kleines Problem, denn wir haben einen JTree mit Buttons entwickelt aber wir haben ein kleines Problem, wir können zwar auf die Buttons reagieren aber wenn wir dann ein 2tes Fenster aufrufen dann kann man dort weder Buttons noch Textfelder betätigen. Es funktioniert nichts. Bitte um hilfe!!
Bitte um hilfe!!
Wir haben ein kleines Problem, denn wir haben einen JTree mit Buttons entwickelt aber wir haben ein kleines Problem, wir können zwar auf die Buttons reagieren aber wenn wir dann ein 2tes Fenster aufrufen dann kann man dort weder Buttons noch Textfelder betätigen. Es funktioniert nichts. Bitte um hilfe!!
Code:
package com.cbm.vis.util;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.*;
import javax.swing.*;
import javax.swing.tree.*;
import com.cbm.util.CBMIConstant;
import com.cbm.vis.cashbook.CBM_KBEntry;
import com.cbm.vis.main.CBMMain;
/****************************************************
* Name: JTree mit Buttons *
* Author: Thomas *
* Date: 30.12.2006 *
* Modified Date: 5.1.2007 *
* Version: 1.4 [Beta] *
* ------------------------------------------------*
* Description: Tree um auf die diversen Funktion *
* des Programms zugreifen zu können *
***************************************************/
public class CBMJTree
implements CBMIConstant
{
/* Konstante für die Größe des JTrees im Hauptfenster */
private static final int m_sizex = 200;
private CBM Kassabuch[] = {
new CBM(" KB Eintrag "),
new CBM(" KB Editieren "),
new CBM(" KB Löschen "),
new CBM(" KB Auflisten "),
new CBM(" KB Drucken ") };
private CBM Kundenverwaltung[] = {
new CBM(" Kundeneintrag "),
new CBM(" Kunden Editieren "),
new CBM(" Kunden Löschen "),
new CBM(" Kunden Auflisten "),
new CBM(" Kunden Drucken ") };
private CBM Administrator[] = {
new CBM(" AD Einstellungen "),
new CBM(" AD Benutzer "),
new CBM(" AD Login/Logout "),
new CBM(" AD Informationen ")};
private Vector KBVector;
private Vector KVVector;
private Vector ADVector;
private Vector rootVector;
private JTree tree;
private JScrollPane scroll;
public CBMJTree()
{
KBVector = new NameVector("Kassabuch", Kassabuch);
KVVector = new NameVector("Kundenverwaltung", Kundenverwaltung);
ADVector = new NameVector("Administrator", Administrator);
Object rootNodes[] = { KBVector, KVVector, ADVector };
rootVector = new NameVector("Root", rootNodes);
tree = new JTree(rootVector);
TreeCellRenderer renderer = new CBMCellRenderer();
tree.setCellRenderer(renderer);
scroll = new JScrollPane(tree);
scroll.setPreferredSize(new Dimension(m_sizex,m_fgry));
}
public Component getJScrollPane()
{
return scroll;
}
}
class CBM
{
String title;
public CBM(String title)
{
this.title = title;
}
public String getTitle()
{
return title;
}
}
class CBMCellRenderer
implements TreeCellRenderer
{
String titel;
JLabel titleLabel;
JPanel renderer;
DefaultTreeCellRenderer defaultRenderer = new DefaultTreeCellRenderer();
Color backgroundSelectionColor;
Color backgroundNonSelectionColor;
private JButton button;
private String react;
public CBMCellRenderer()
{
renderer = new JPanel(new FlowLayout(FlowLayout.RIGHT,6,6));
titleLabel = new JLabel(" ");
titleLabel.setForeground(Color.blue);
button = new JButton();
renderer.add(button);
backgroundSelectionColor = defaultRenderer.getBackgroundSelectionColor();
backgroundNonSelectionColor = defaultRenderer.getBackgroundNonSelectionColor();
}
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus)
{
Component returnValue = null;
if ((value != null) && (value instanceof DefaultMutableTreeNode))
{
Object userObject = ((DefaultMutableTreeNode) value).getUserObject();
if (userObject instanceof CBM)
{
CBM book = (CBM) userObject;
button.setText(book.getTitle());
react=book.getTitle();
if (selected)
{
renderer.setBackground(backgroundSelectionColor);
//Hier kann jetzt auf die Buttons reagiert werden
if(react==" Kundeneintrag ")
{
System.out.println(""+react);
}else if(react==" Kunden Editieren ")
{
System.out.println(""+react);
}else if(react==" Kunden Löschen ")
{
System.out.println(""+react);
}else if(react==" Kunden Auflisten ")
{
System.out.println(""+react);
}else if(react==" Kunden Drucken ")
{
System.out.println(""+react);
}else if(react==" KB Eintrag ")
{
System.out.println(""+react);
CBM_KBEntry entry=new CBM_KBEntry();
CBMMain.setrightPanelComponent2(entry.getMainJPanel());
CBMMain.setrightPanelComponent3(entry.getJButtonPanel());
}else if(react==" KB Editieren ")
{
System.out.println(""+react);
}else if(react==" KB Löschen ")
{
System.out.println(""+react);
}else if(react==" KB Auflisten ")
{
System.out.println(""+react);
}else if(react==" KB Drucken ")
{
System.out.println(""+react);
}else if(react==" AD Einstellungen ")
{
System.out.println(""+react);
}else if(react==" AD Benutzer ")
{
System.out.println(""+react);
}else if(react==" AD Login/Logout ")
{
System.out.println(""+react);
}else if(react==" AD Informationen ")
{
System.out.println(""+react);
}
}
else
{
renderer.setBackground(backgroundNonSelectionColor);
}
renderer.setEnabled(tree.isEnabled());
returnValue = renderer;
}
}
if (returnValue == null)
{
returnValue = defaultRenderer.getTreeCellRendererComponent(tree,value, selected, expanded, leaf, row, hasFocus);
}
return returnValue;
}
}
class NameVector
extends Vector
{
private static final long serialVersionUID = 1L;
String name;
public NameVector(String name)
{
this.name = name;
}
public NameVector(String name, Object elements[])
{
this.name = name;
for (int i = 0, n = elements.length; i < n; i++)
{
add(elements[i]);
}
}
public String toString()
{
return "[" + name + "]";
}
}
und nun die Klasse die Aufgerufen wird
package com.cbm.vis.cashbook;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class CBM_KBEntry
extends JPanel
implements ActionListener
{
private JTextField m_datum;
private JTextField m_purpose;
private JTextField m_account;
private JTextField m_amount;
private JRadioButton m_input;
private JRadioButton m_output;
private JButton m_save;
private JButton m_cancel;
private JPanel m_JRadioPanel;
private JPanel m_JButtonPanel;
public CBM_KBEntry()
{
setLayout(new GridLayout(5,2));
add(new JLabel(" Verbuchungsdatum: "));
m_datum=new JTextField("",25);
add(m_datum);
add(new JLabel("Zweck: "));
m_purpose=new JTextField("",25);
add(m_purpose);
add(new JLabel(" Buchungsnummer: "));
m_account=new JTextField("",25);
add(m_account);
add(new JLabel(" Betrag: "));
m_amount=new JTextField("",25);
add(m_amount);
add(new JLabel(" Einnahme/Ausgabe: "));
m_JRadioPanel=new JPanel(new FlowLayout(FlowLayout.CENTER,5,1));
ButtonGroup bo=new ButtonGroup();
m_input=new JRadioButton(" Einnahme",true);
m_JRadioPanel.add(m_input);
bo.add(m_input);
m_output=new JRadioButton(" Ausgabe",false);
m_JRadioPanel.add(m_output);
bo.add(m_output);
add(m_JRadioPanel);
m_JButtonPanel=new JPanel(new FlowLayout(FlowLayout.CENTER,20,0));
m_save=new JButton("Speichern");
m_save.addActionListener(this);
m_cancel=new JButton("Abbrechen");
m_cancel.addActionListener(this);
m_JButtonPanel.add(m_save);
m_JButtonPanel.add(m_cancel);
setBorder(BorderFactory.createTitledBorder("Eintragung"));
}
public JPanel getMainJPanel()
{
return this;
}
public JPanel getJButtonPanel()
{
return m_JButtonPanel;
}
public void actionPerformed(ActionEvent event) {
// TODO Auto-generated method stub
}
}