Frage : GUI-Baum-Problem

Die beste Weise, mein Problem zu erklären ist, wie folgt…
Please die zwei Akten MonitorPanel und RunMonitorPanel kompilieren und das RunMonitorPanel class.

You sieht laufen lassen, dass ein kleines GUI oben mit einem Baum mit zwei Nullpunkten „Verkleidungen“ und „Modi“ knallt.

Step 1. Recht - irgendwelche Niederlassungen an klicken, die es Popup- „Alarmtafel“ herstellt und „Warnung verursachen“.

Step 2. Irgendwelche der Nullpunkte (Sie r sehen app1, app2 usw.) jetzt erweitern. Tun Schritt 1.

Why ist, dass der Knall oben nicht jetzt herauskommt?

import java.awt.BorderLayout;
import java.awt. Verkleidung;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Liste;
import javax.swing.BoxLayout;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel;


public Kategorie MonitorPanel verlängert Verkleidungswerkzeuge TreeSelectionListener {


privates JPanel configPanel = neues JPanel ();
privates JLabel configPathLabel = neues JLabel („Weg“);
privates JTextField configPathField = neues JTextField (20);
privates JLabel configModeLabel = neues JLabel („Modus“);
privates JTextField configModeField = neues JTextField (2);
//
privates DefaultMutableTreeNode rootNode = neues DefaultMutableTreeNode („top“);
private DefaultMutableTreeNode apModes = neues DefaultMutableTreeNode („panels“);
privates DefaultMutableTreeNode alarmsNode = neues DefaultMutableTreeNode („modes“);
privates DefaultTreeModel treeModel = neues DefaultTreeModel (rootNode) ;
privater JTree Baum;
privates JScrollPane treePane;
privates CAPopupMenu caPopup = neues CAPopupMenu ();
privates CAPPopupMenu capPopup = neues CAPPopupMenu ();
////////////////////////// ////////////////////////////////////////////////////

/** Konstruieren ein Fall. */
allgemeines MonitorPanel () {
// Draht das Config panel
configPanel.setLayout (neues BoxLayout (configPanel, BoxLayout.LINE_AXIS));
configPanel.add (configPathLabel);
configPanel.add (configPathField);
configPanel.add (configModeLabel);
configPanel.add (configModeField);
configPathField.setEditable (falsch);
configModeField.setEditable (falsch);
// Draht das tree
rootNode.add (apModes);
rootNode.add (alarmsNode);
Baum = neues JTree (treeModel);
tree.setRootVisible (falsches) ;
tree.setShowsRootHandles (true);
tree.getSelectionModel () .setSelectionMode (TreeSelectionModel.SINGLE_TREE_SELECTION);

treePane = neues JScrollPane (Baum);
//
setLayout (neues BorderLayout ());
hinzufügen ORTH (configPanel, BorderLayout.NORTH);
hinzufügen NTER (treePane, BorderLayout.CENTER);
//
tree.addMouseListener (neues MyMouseListener ());
}

Öffentlichkeits-Lücke setConfigPath (Schnurweg) {
configPathField.setText (path);
}

Öffentlichkeits-Lücke setConfigMode (Schnurmodus) {
configModeField.setText (mode == Null? "": Modus);
}

Öffentlichkeits-Lücke setAlarmPanelNames (Listring> Namen) {
apModes.removeAllChildren ();
// gesetzte Namen zum gegenwärtigen list
für (Schnurname: Namen) {
addAPName (Name, falsch);
}
}

allgemeines DefaultMutableTreeNode addAPName (Schnur alarmPanelName, Boolesches shouldBeVisible) {
DefaultMutableTreeNode childNode = neues DefaultMutableTreeNode (alarmPanelName);

treeModel.insertNodeInto (childNode, apModes, apModes.getChildCount ());

, wenn (shouldBeVisible) {
tree.scrollPathToVisible (new TreePath (childNode.getPath ()));
}

RückholchildNode;
}

Öffentlichkeits-Lücke setAlarmNames (List Namen) {
alarmsNode.removeAllChildren ();
// gesetzte Namen zum gegenwärtigen list
für (Schnurname: Namen) {
addAlarmName (Name, falsch);
}
}

allgemeines DefaultMutableTreeNode addAlarmName (Schnur alarmName, Boolesches shouldBeVisible) {
DefaultMutableTreeNode childNode = neues DefaultMutableTreeNode (alarmName);

treeModel.insertNodeInto (childNode, alarmsNode, alarmsNode.getChildCount () );

, wenn (shouldBeVisible) {
tree.scrollPathToVisible (new TreePath (childNode.getPath ()));
}

RückholchildNode;
}

@Override
Öffentlichkeitslücke valueChanged (TreeSelectionEvent e) {
//Returns das letzte Wegelement der selection.
//This Methode ist nützlich, nur wenn das Vorwählermodell einen einzelnen selection.
DefaultMutableTreeNode Nullpunkt = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent erlaubt ();

, wenn (Nullpunkt == Null) //Nothing selected.
ist {
Rückkehr;
}

System.out.println („TreeSelectionListener.valueChanged () : node=“ + node.getUserObject ());
}

////////////////////////// ////////////////////////////////////////////////////
private statische Kategorie MyDefaultMutableTreeNode verlängert DefaultMutableTreeNode {

allgemeines MyDefaultMutableTreeNode (Object userObject) {das
Super (userObject);
}

@Override
allgemeines Boolesches isLeaf () {
Rückholfalsches;
}
}
////////////////////////// ////////////////////////////////////////////////////

/**
* hört auf Antrag, popup
*/
private Kategorie zu zeigen, die MyMouseListener MouseAdapter verlängert {

@Override
Öffentlichkeitslücke (MouseEvent e) {
maybeShowPopup (e);
}

@Override
Öffentlichkeitslücke mouseReleased (MouseEvent e) {
maybeShowPopup (e);
}

privates leeres maybeShowPopup (MouseEvent e) {
, wenn (e.isPopupTrigger ()) {

TreePath selPath = tree.getPathForLocation (e.getX (), e.getY ());


wenn (selPath! = null) {
DefaultMutableTreeNode Nullpunkt = (DefaultMutableTreeNode) selPath.getLastPathComponent ();
, wenn (node.equals (alarmsNode)) {
System.out.println („selected alarmiert Nullpunkt“);
caPopup.sh ow (e.getComponent (), e.getX (), e.getY ());

} sonst, wenn (node.equals (apModes)) {
System.out.println („selected Alarmtafelnullpunkt“);
capPopup.sh ow (e.getComponent (), e.getX (), e.getY ());

} sonst, wenn (alarmsNode.isNodeChild (node)) {
System.out.println („selected Warnungsnullpunkt“);

} sonst wenn (apModes.isNodeChild (Nullpunkt) ) {
System.out.println („selected Alarmtafelnullpunkt“);
}
}

}
}
}
////////////////////////// ////////////////////////////////////////////////////

private Kategorie CAPopupMenu verlängert JPopupMenu {

privates JMenuItem selectAlarmMenuItem = neues JMenuItem („Warnung verursachen“);

allgemeines CAPopupMenu () {

hinzufügen (selectAlarmMenuItem);

selectAlarmMenuItem.addActionListener (neues ActionListener () {

Öffentlichkeitslücke (ActionEvent e) {
System.out.println („creating Warnung“);
}
});

}
} ////////////////////////// ////////////////////////////////////////////////////

private Kategorie CAPPopupMenu verlängert JPopupMenu {

privates JMenuItem selectAlarmMenuItem = neues JMenuItem („Alarmtafel herstellen“);

allgemeines CAPPopupMenu () {

hinzufügen (selectAlarmMenuItem);

selectAlarmMenuItem.addActionListener (neues ActionListener () {

Öffentlichkeitslücke (ActionEvent e) {
System.out.println („creating Alarmtafel“);
}
});

}
}
}

======================================================================
import java.awt. Bestandteil;
import java.awt. Maß;
import java.awt. Toolkit;
import java.util. Reihen;
import javax.swing.JFrame;

public Kategorie RunMonitorPanel {

/** einen Fall konstruieren. */
allgemeines RunMonitorPanel () {
}

/**
* einen Bestandteil auf dem screen.
zentrieren * @param Ziel der Bestandteil, zum centered.
*/
zu sein private Staticlücke centerOnScreen (Teilziel) {
wenn (Ziel! = null) {
Maß = Toolkit.getDefaultToolkit () .getScreenSize ();
Maß targetSize = target.getSize ();

wenn (targetSize.height > screenSize.height) {
targetSize.height = screenSize.height;
}

wenn (targetSize.width > screenSize.width) {
targetSize.width = screenSize.width;
}

int x = (screenSize.width - targetSize.width)/2;
int y = (screenSize.height - targetSize.height)/2;

target.setLocation (x, y);
}
}

/**
* dem GUI.
*/
privates statisches leeres createAndShowGUI verursachen und zeigen () {
//Create und gründete den window.
JFrame Rahmen = neues JFrame („MonitorPanel“);
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

// gründete die Verkleidung des Inhalts pane.
MonitorPanel = neues MonitorPanel ();
frame.getContentPane () .add (Verkleidung);
// einstellte etwas Werte für display
panel.setConfigPath/> (“ /tmp/config ");
panel.setConfigMode („RW“);
Schnur [] alarmNames = {„a1“, „a2“, „a3“};
panel.setAlarmNames (Arrays.asList (alarmNames));
Schnur [] alarmPanelNames = {„ap1“, „ap2“, „ap3“};
panel.setAlarmPanelNames (Arrays.asList (alarmPanelNames));

// Satz und zeigen das window.
frame.pack ();
centerOnScreen (Rahmen);
frame.setVisible (zutreffend);
}

/**
* die allgemeine Haupt Staticlücke verursachen und zeigen dem GUI.
*/
(Schnur [] args) {

javax.swing.SwingUtilities.invokeLater (neues jagdbares () {

Öffentlichkeitslücke () {
createAndShowGUI ();
}
});
}
}

==================================================================



Antwort : GUI-Baum-Problem

Ich schätze, dass es minus 45 sein sollte:

WO providerID INNEN („A000000015210B“, „A000000003731B ")
  UND Input_Date <� DATEADD="">
oder

WO providerID INNEN („A000000015210B“, „A000000003731B ")
  UND Received_Date > DATEADD (Tag, 45, Input_Date)
Weitere Lösungen  
 
programming4us programming4us