Hallo,
ich versuche hier eine Oberfläche zu gestalten und wollte mich mal am GridBagLayout versuchen.
Habe mir auch alles schön aufgezeichnet und enstprechend programmiert (zumindest dachte ich das), aber jetzt sieht es plötzlich ganz anders aus als es soll.
Und zwar hab ich folgende Probleme:
1. Warum beginnt und endet der Inhalt meines Panels nicht am Rand des Frames?
2. Das Label "ECE-Communication" sollte rechts neben der Tabelle der Ports anfangen
3. Links die CheckBox "Autocheck" und der darauffolgende Button sollten auf gleicher Höhe mit dem Ende der rechten Tabelle sein
4. Die Tabelle mit den Ports sollte direkt über eben genannter Zeile enden
Und wahrscheinlich hab ich noch mehr Fragen die mir jetzt aber grade nicht mehr einfallen...
ich poste jetzt mal noch meinen Code und hoffe mir kann jemand helfen:
also ein problem habe ich inzwischen gelöst, warum das label ece-communication noch über der tabelles steht, ich darf nich noch -1 machen
aber die ganzen anderen probleme ;(
ich versuche hier eine Oberfläche zu gestalten und wollte mich mal am GridBagLayout versuchen.
Habe mir auch alles schön aufgezeichnet und enstprechend programmiert (zumindest dachte ich das), aber jetzt sieht es plötzlich ganz anders aus als es soll.
Und zwar hab ich folgende Probleme:
1. Warum beginnt und endet der Inhalt meines Panels nicht am Rand des Frames?
2. Das Label "ECE-Communication" sollte rechts neben der Tabelle der Ports anfangen
3. Links die CheckBox "Autocheck" und der darauffolgende Button sollten auf gleicher Höhe mit dem Ende der rechten Tabelle sein
4. Die Tabelle mit den Ports sollte direkt über eben genannter Zeile enden
Und wahrscheinlich hab ich noch mehr Fragen die mir jetzt aber grade nicht mehr einfallen...
ich poste jetzt mal noch meinen Code und hoffe mir kann jemand helfen:
Java:
public class GUI {
private static String title = "ECE-Validation-Tool: Monitoring";
/** a logger to use */
private static final Logger LOGGER = Logger.getLogger(GUI.class);
/** ---------- gui components ---- */
/** holds frame */
private static JFrame myFrame = null;
public static void initialize() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception exc) {
LOGGER.error("could not set look and feel to system", exc);
}
myFrame = new JFrame();
myFrame.setSize(1200, 800);
myFrame.setLocation(50, 50);
myFrame.setResizable(true);
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myFrame.setTitle(title);
myFrame.setJMenuBar(createMenu());
myFrame.setContentPane(createContent());
myFrame.setVisible(true);
}
public static JPanel createContent() {
JPanel panel = new JPanel();
GridBagLayout gbl = new GridBagLayout();
panel.setLayout(gbl);
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.insets = new Insets(5, 5, 5, 5);
gbc.gridx = 0; // x-Position im gedachten Gitter
gbc.gridy = 0; // y-Position im gedachten Gitter
gbc.gridheight = 1; // ein Gitter-Feld hoch
gbc.gridwidth = 1;
final JLabel labelPorts = new JLabel("Overview Ports:");
gbl.setConstraints(labelPorts, gbc);
panel.add(labelPorts);
int tablePortsWidth = 10;
gbc.gridx = 0;
gbc.gridy = 1;
gbc.gridheight = 8;
gbc.gridwidth = tablePortsWidth;
final JScrollPane scrollPorts = createTablePorts();
gbl.setConstraints(scrollPorts, gbc);
panel.add(scrollPorts);
gbc.gridx = 0;
gbc.gridy = 9;
gbc.gridheight = 1;
gbc.gridwidth = 1;
JPanel panelOptions = new JPanel();
panelOptions.setLayout(new FlowLayout());
JCheckBox checkAutoPorts = new JCheckBox();
panelOptions.add(checkAutoPorts);
JLabel labelCheckAutoPorts = new JLabel("Autocheck");
panelOptions.add(labelCheckAutoPorts);
gbl.setConstraints(panelOptions, gbc);
panel.add(panelOptions);
gbc.gridx = 1;
gbc.gridy = 9;
gbc.gridheight = 1;
gbc.gridwidth = 1;
JButton buttonPorts = new JButton("Test Ports");
gbl.setConstraints(buttonPorts, gbc);
panel.add(buttonPorts);
int communicationBegin = tablePortsWidth - 1;
gbc.gridx = communicationBegin;
gbc.gridy = 0;
gbc.gridheight = 1;
gbc.gridwidth = 1;
final JLabel labelCommunication = new JLabel("ECE-Communication:");
gbl.setConstraints(labelCommunication, gbc);
panel.add(labelCommunication);
gbc.gridx = communicationBegin + 1;
gbc.gridy = 1;
gbc.gridheight = 1;
gbc.gridwidth = 1;
final JLabel labelRMI = new JLabel("RMI-Test:");
gbl.setConstraints(labelRMI, gbc);
panel.add(labelRMI);
gbc.gridx = communicationBegin + 2;
gbc.gridy = 1;
gbc.gridheight = 1;
gbc.gridwidth = 1;
// muss natürlich aus dem test zu folgern sein
final JLabel labelRMITest = new JLabel("ERROR");
gbl.setConstraints(labelRMITest, gbc);
panel.add(labelRMITest);
gbc.gridx = communicationBegin + 1;
gbc.gridy = 2;
gbc.gridheight = 1;
gbc.gridwidth = 1;
JPanel panelOptionsRMI = new JPanel();
panelOptionsRMI.setLayout(new FlowLayout());
JCheckBox checkAutoRMI = new JCheckBox();
panelOptionsRMI.add(checkAutoRMI);
JLabel labelCheckAutoRMI = new JLabel("Autocheck");
panelOptionsRMI.add(labelCheckAutoRMI);
gbl.setConstraints(panelOptionsRMI, gbc);
panel.add(panelOptionsRMI);
gbc.gridx = communicationBegin + 2;
gbc.gridy = 2;
gbc.gridheight = 1;
gbc.gridwidth = 1;
final JButton buttonRMI = new JButton("Test RMI");
gbl.setConstraints(buttonRMI, gbc);
panel.add(buttonRMI);
gbc.gridx = communicationBegin + 1;
gbc.gridy = 3;
gbc.gridheight = 1;
gbc.gridwidth = 1;
final JLabel labelJMS = new JLabel("JMS-Test:");
gbl.setConstraints(labelJMS, gbc);
panel.add(labelJMS);
gbc.gridx = communicationBegin + 2;
gbc.gridy = 3;
gbc.gridheight = 1;
gbc.gridwidth = 1;
// muss natürlich aus dem test zu folgern sein
final JLabel labelJMSTest = new JLabel("OK");
gbl.setConstraints(labelJMSTest, gbc);
panel.add(labelJMSTest);
gbc.gridx = communicationBegin + 1;
gbc.gridy = 4;
gbc.gridheight = 1;
gbc.gridwidth = 1;
JPanel panelOptionsJMS = new JPanel();
panelOptionsJMS.setLayout(new FlowLayout());
JCheckBox checkAutoJMS = new JCheckBox();
panelOptionsJMS.add(checkAutoJMS);
JLabel labelCheckAutoJMS = new JLabel("Autocheck");
panelOptionsJMS.add(labelCheckAutoJMS);
gbl.setConstraints(panelOptionsJMS, gbc);
panel.add(panelOptionsJMS);
gbc.gridx = communicationBegin + 2;
gbc.gridy = 4;
gbc.gridheight = 1;
gbc.gridwidth = 1;
final JButton buttonJMS = new JButton("Test JMS");
gbl.setConstraints(buttonJMS, gbc);
panel.add(buttonJMS);
gbc.gridx = communicationBegin + 2;
gbc.gridy = 5;
gbc.gridheight = 1;
gbc.gridwidth = 1;
final JLabel labelJMSMessages = new JLabel("Received JMS-Messages");
gbl.setConstraints(labelJMSMessages, gbc);
panel.add(labelJMSMessages);
gbc.gridx = communicationBegin + 2;
gbc.gridy = 6;
gbc.gridheight = 4;
gbc.gridwidth = 4;
final JScrollPane scrollJMSMessages = createTableJMSMessages();
gbl.setConstraints(scrollJMSMessages, gbc);
panel.add(scrollJMSMessages);
return panel;
}
public static JScrollPane createTablePorts() {
// muss natürlich dynamisch befüllt werden
String[][] rowData = { {"OK", "1099", "TCP", "JBoss", "Port open"},
{"ERROR", "1098", "TCP", "JBoss", "Firewall blocked"}, {"ERROR", "1097", "TCP", "bla", "Port closed"}};
String[] columnNames = {"Status", "Port", "Typ", "Service-Name", "Report"};
JTable tablePorts = new JTable(rowData, columnNames);
JScrollPane scrollTablePorts = new JScrollPane(tablePorts);
return scrollTablePorts;
}
public static JScrollPane createTableJMSMessages() {
// muss natürlich dynamisch befüllt werden
String[][] rowData = { {"12:53:22", "blupp"}, {"12:55:42", "bluppfsfsfsdf"},
{"12:59:52", "blupdsfsddddddddddddddddddp"},};
String[] columnNames = {"Timestamp", "Message"};
JTable tableJMSMessages = new JTable(rowData, columnNames);
JScrollPane scrollTableJMSMessages = new JScrollPane(tableJMSMessages);
return scrollTableJMSMessages;
}
public static JMenuBar createMenu() {
JMenuBar menuBar = new JMenuBar();
JMenu menuAutomaticTest = new JMenu("Automatically Tests every 30 sec.");
final JRadioButtonMenuItem checkOn = new JRadioButtonMenuItem("On");
menuAutomaticTest.add(checkOn);
final JRadioButtonMenuItem checkOff = new JRadioButtonMenuItem("Off");
menuAutomaticTest.add(checkOff);
final JRadioButtonMenuItem checkManuell = new JRadioButtonMenuItem("Manuell");
menuAutomaticTest.add(checkManuell);
menuBar.add(menuAutomaticTest);
ActionListener actionAutomaticTest = new ActionListener() {
public void actionPerformed(ActionEvent e) {
checkOn.setSelected(false);
checkOff.setSelected(false);
checkManuell.setSelected(false);
JRadioButtonMenuItem choice = (JRadioButtonMenuItem) e.getSource();
choice.setSelected(true);
}
};
checkOn.addActionListener(actionAutomaticTest);
checkOff.addActionListener(actionAutomaticTest);
checkManuell.addActionListener(actionAutomaticTest);
JMenu menuAbout = new JMenu("About");
JMenuItem miAboutInfo = new JMenuItem("Info");
menuAbout.add(miAboutInfo);
menuBar.add(menuAbout);
JMenu menuHelp = new JMenu("Help");
JMenuItem miHelpHelp = new JMenuItem("Help");
menuHelp.add(miHelpHelp);
menuBar.add(menuHelp);
return menuBar;
}
public static void main(String[] args) {
initialize();
}
}
also ein problem habe ich inzwischen gelöst, warum das label ece-communication noch über der tabelles steht, ich darf nich noch -1 machen
aber die ganzen anderen probleme ;(
Zuletzt bearbeitet: