Sapor2211
Cadet 4th Year
- Registriert
- Dez. 2013
- Beiträge
- 82
Hallo CB Forum User,
Ich programmiere momentan ein kleines Ticket Tool für unser Unternehmen.
Nichts wildes, lediglich verschiedene Panels (Bereiche) mit Auswahlmöglichkeiten über RadioButton und kleinen Kommentar/Usernamen-Feldern, die dann als E-Mail formatiert und versendet werden.
Zu Mir: JavaAnfänger nur als gelegentliches Hobby, komme aus der SPS Programmierung
Aufbau: Ein JSplitPane | Links ein JTree als Navigation, Rechts die JPanels.
Problem:
Wenn Links auf ein den Pfad des JTree´s geklickt wird, sollen JPanels der Rechte Seite "upgedatet" werden.
Momentan wird immer das CloudPanel(panelheader) aufgerufen. Allerdings sollte sich der Headername immer ändern.
Über den TreeSelectionListener lasse ich mir den Pfad als String zurückgeben. Diesen verwende ich momentan nur um den Headernamen des CloudPanels ändern zu lassen. Dieser bleibt aber wie bei der Initialisierung auf "Start" (Bild1)
Der Pfad String ändert sich auch. Gebe ich zu Testzwecken immer gerne über die Konsole aus. Bild2
Ich gehe davon aus, das ich hier (SplittPane.java) etwas ändern muss. Leider bin ich momentan ratlos was... Und es liegt nicht an der jetzigen Uhrzeit ich versuche es schon seid Tagen.
Achso: Ja CardLayout ist mir ein Begriff, finde ich aber Optisch nicht hübsch. Eine Navigation ist da schon eleganter.
Bilder:
SourceCode:
-----------------------------------------------------------------------------------------------------------------------
MainWindow.java
SplittPane.java
CloudPanel.java
MenuNavigation.java
NaviStringSelection.java kann man ausser Acht lassen. Dort werden die Strings nur über ein Switch einem Int zugeordnet.
Ich programmiere momentan ein kleines Ticket Tool für unser Unternehmen.
Nichts wildes, lediglich verschiedene Panels (Bereiche) mit Auswahlmöglichkeiten über RadioButton und kleinen Kommentar/Usernamen-Feldern, die dann als E-Mail formatiert und versendet werden.
Zu Mir: JavaAnfänger nur als gelegentliches Hobby, komme aus der SPS Programmierung
Aufbau: Ein JSplitPane | Links ein JTree als Navigation, Rechts die JPanels.
Problem:
Wenn Links auf ein den Pfad des JTree´s geklickt wird, sollen JPanels der Rechte Seite "upgedatet" werden.
Momentan wird immer das CloudPanel(panelheader) aufgerufen. Allerdings sollte sich der Headername immer ändern.
Über den TreeSelectionListener lasse ich mir den Pfad als String zurückgeben. Diesen verwende ich momentan nur um den Headernamen des CloudPanels ändern zu lassen. Dieser bleibt aber wie bei der Initialisierung auf "Start" (Bild1)
Der Pfad String ändert sich auch. Gebe ich zu Testzwecken immer gerne über die Konsole aus. Bild2
Ich gehe davon aus, das ich hier (SplittPane.java) etwas ändern muss. Leider bin ich momentan ratlos was... Und es liegt nicht an der jetzigen Uhrzeit ich versuche es schon seid Tagen.
Code:
//Update Panel
static void updateLabel(String updateSelectNode) {
panelheader = updateSelectNode;
cp = new CloudPanel(panelheader);
System.out.println(panelheader);
}
Achso: Ja CardLayout ist mir ein Begriff, finde ich aber Optisch nicht hübsch. Eine Navigation ist da schon eleganter.
Bilder:
SourceCode:
-----------------------------------------------------------------------------------------------------------------------
MainWindow.java
Code:
public class MainWindow {
private JFrame frame;
public String UsernameGlobal = null;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
MainWindow window = new MainWindow();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public MainWindow() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
// ########### Set Frame ####################
String Username = System.getProperty("user.name"); // Hole aktuellen
// Windows User
UsernameGlobal = Username;
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.getContentPane().setBackground(Color.WHITE);
frame.getContentPane().setLayout(null);
frame.setIconImage(
Toolkit.getDefaultToolkit().getImage(MainWindow.class.getResource("/mainframetool/icon/logo.png")));
frame.setTitle("Operating Ticket Tool " + Username);
frame.setBounds(100, 100, 600, 470);
// ######## Set Frame Ende #####################
//Erstelle Horizontales SplittPane (Links JTree als Navigation, Rechts JPanels
SplittPane splitt = new SplittPane();
frame.getContentPane().add(splitt.getSplitPane());
}
}
SplittPane.java
Code:
import javax.swing.JPanel;
import javax.swing.JSplitPane;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
public class SplittPane extends JPanel {
private static JSplitPane splitPane;
private static JPanel cp;
private static String panelheader = "Start";
public SplittPane() {
setLayout(null);
// Panel Rechts
cp = new CloudPanel(panelheader);
// Navi Links
MenuNavigation menu = new MenuNavigation();
// Erzeuge Horizontal SplitPane mit JTreeNavigation Links und Panels
// Rechts
splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, menu, cp);
splitPane.setDividerSize(1);
splitPane.setDividerLocation(120);
splitPane.setBounds(0, 0, 600, 470);
splitPane.setOneTouchExpandable(true);
updateLabel(panelheader);
}
//Für MainWindow.java
public JSplitPane getSplitPane() {
return splitPane;
}
//Update Panel
static void updateLabel(String updateSelectNode) {
panelheader = updateSelectNode;
cp = new CloudPanel(panelheader);
System.out.println(panelheader);
}
}
// Auswertung welcher String aus dem JTree (MenuNavigation.java) angeklickt wurden ist.
class SelectionListener implements TreeSelectionListener {
public void valueChanged(TreeSelectionEvent se) {
JTree tree = (JTree) se.getSource();
DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
String selectedNodeName = selectedNode.toString();
if (selectedNode.isLeaf()) {
MenuNavigation.GetIntSelection = NaviStringSelection.NaviStringSelectionListener(selectedNodeName);
System.out.println(MenuNavigation.GetIntSelection);
SplittPane.updateLabel(selectedNodeName);
}
}
}
CloudPanel.java
Code:
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JSeparator;
import javax.swing.JSplitPane;
import javax.swing.JTextPane;
import java.awt.SystemColor;
import java.awt.Font;
public class CloudPanel extends JPanel {
private JTextField textField_cloud;
public CloudPanel(String panel) {
setLayout(null);
JRadioButton rdbtn_cloud = new JRadioButton("New radio button");
rdbtn_cloud.setFont(new Font("Tahoma", Font.BOLD, 11));
rdbtn_cloud.setBounds(132, 89, 188, 23);
add(rdbtn_cloud);
JRadioButton rdbtn_cloud2 = new JRadioButton("New radio button");
rdbtn_cloud2.setFont(new Font("Tahoma", Font.BOLD, 11));
rdbtn_cloud2.setBounds(132, 115, 188, 23);
add(rdbtn_cloud2);
JRadioButton rdbtn_cloud3 = new JRadioButton("New radio button");
rdbtn_cloud3.setFont(new Font("Tahoma", Font.BOLD, 11));
rdbtn_cloud3.setBounds(132, 141, 188, 23);
add(rdbtn_cloud3);
JRadioButton rdbtn_cloud4 = new JRadioButton("New radio button");
rdbtn_cloud4.setFont(new Font("Tahoma", Font.BOLD, 11));
rdbtn_cloud4.setBounds(132, 167, 188, 23);
add(rdbtn_cloud4);
textField_cloud = new JTextField("");
textField_cloud.setBounds(132, 62, 188, 20);
add(textField_cloud);
textField_cloud.setColumns(10);
JButton btn_cloud = new JButton("Ticket erstellen");
btn_cloud.setBounds(132, 246, 188, 23);
add(btn_cloud);
JSeparator separator = new JSeparator();
separator.setBounds(10, 233, 430, 2);
add(separator);
JRadioButton rdbtn_cloud_loc1 = new JRadioButton("Wob2");
rdbtn_cloud_loc1.setFont(new Font("Tahoma", Font.BOLD, 11));
rdbtn_cloud_loc1.setBounds(10, 203, 109, 23);
add(rdbtn_cloud_loc1);
JRadioButton rdbtn_cloud_loc2 = new JRadioButton("MB");
rdbtn_cloud_loc2.setFont(new Font("Tahoma", Font.BOLD, 11));
rdbtn_cloud_loc2.setBounds(132, 203, 109, 23);
add(rdbtn_cloud_loc2);
JTextPane txtpnUserprojekt = new JTextPane();
txtpnUserprojekt.setEditable(false);
txtpnUserprojekt.setFont(new Font("Tahoma", Font.BOLD, 11));
txtpnUserprojekt.setBackground(SystemColor.control);
txtpnUserprojekt.setText("User/Projekt:");
txtpnUserprojekt.setBounds(10, 62, 109, 20);
add(txtpnUserprojekt);
JTextPane txtpnCloud = new JTextPane();
txtpnCloud.setEditable(false);
txtpnCloud.setText(panel);
txtpnCloud.setBackground(SystemColor.control);
txtpnCloud.setBounds(132, 11, 188, 23);
add(txtpnCloud);
}
}
MenuNavigation.java
Code:
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeSelectionModel;
import javax.swing.tree.DefaultMutableTreeNode;
import java.awt.BorderLayout;
import java.util.ArrayList;
import java.awt.Font;
import java.awt.Color;
public class MenuNavigation extends JPanel {
public static int GetIntSelection=1;
public MenuNavigation() {
setBackground(Color.WHITE);
setLayout(new BorderLayout(0, 0));
// Erstelle JTree Navigation
JTree tree = new JTree();
tree.setFont(new Font("Tahoma", Font.BOLD, 11));
//String Array
final ArrayList<String> MainframeNav = new ArrayList<String>();
MainframeNav.add("Mainframe");
MainframeNav.add("IMS");
MainframeNav.add("RVS");
MainframeNav.add("DB2");
MainframeNav.add("Anwalt");
MainframeNav.add("Drucker");
MainframeNav.add("Zutritte");
final ArrayList<String> AllgemeinNav = new ArrayList<String>();
AllgemeinNav.add("Allgemein");
AllgemeinNav.add("Empty1");
AllgemeinNav.add("Empty2");
final ArrayList<String> CloudNavi = new ArrayList<String>();
CloudNavi.add("Cloud");
CloudNavi.add("IaaS");
CloudNavi.add("PaaS");
CloudNavi.add("IDP");
CloudNavi.add("UPS");
CloudNavi.add("Allgemein");
// Erstelle 3 Nodes/Unterordner, zähle Anzahl der Strings aus dem Array(ArrayList Mainframe/Allg/Cloud) und füge
// jeden String den Node hinzu
DefaultMutableTreeNode obj = new DefaultMutableTreeNode("Menu") {
{
DefaultMutableTreeNode node_1;
DefaultMutableTreeNode node_2;
DefaultMutableTreeNode node_3;
node_1 = new DefaultMutableTreeNode(AllgemeinNav.get(0));
for (int i = 1; i < AllgemeinNav.size(); i++) {
node_1.add(new DefaultMutableTreeNode(AllgemeinNav.get(i)));
}
add(node_1);
node_2 = new DefaultMutableTreeNode(MainframeNav.get(0));
for (int i = 1; i < MainframeNav.size(); i++) {
node_2.add(new DefaultMutableTreeNode(MainframeNav.get(i)));
}
add(node_2);
node_3 = new DefaultMutableTreeNode(CloudNavi.get(0));
for (int i = 1; i < CloudNavi.size(); i++) {
node_3.add(new DefaultMutableTreeNode(CloudNavi.get(i)));
}
add(node_3);
}
};
tree.setModel(new DefaultTreeModel(obj));
add(tree, BorderLayout.WEST);
// Methode ob eine Zeile ausgewählt wurde.Auswertung welcher String in
// SelectionListener
tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
tree.addTreeSelectionListener(new SelectionListener());
}
}
NaviStringSelection.java kann man ausser Acht lassen. Dort werden die Strings nur über ein Switch einem Int zugeordnet.