Java Applikation in SystemTray

Hi,

welcher Button verschwindet hinter welchem "Layer" und was führst Du bei einer Änderung der Beschriftung aus?

Code wäre dazu sehr hilfreich, denn ohne diesen kann - ich für meinen Teil zumindest - Dir nicht geholfen werden.

Gruß

Romsl
 
Hi,
endlich mal wieder einer, der mir hilft ;)

Ich hab mal ein Bildchen angehängt.
Und dies ist die Funktion, die den Buttons neue Beschriftungen gibt.

Java:
public void checkInitNew(console cs, JMenu ApaM, JMenu MyM) throws Exception
  {
     int curApaShownState = ((cs.Apachestatus.getText() == "läuft!" ? 0 : 1));
     int curMyShownState = ((cs.MYSQLstatus.getText() == "läuft!" ? 0 : 1));
     int curApaState = check_service("Apache2");
     int curMyState = check_service("MySql");
     
     cs.Apachestatus.setText((curApaState == 0 ? "läuft!" : "läuft nicht!"));
     cs.Apachestatus.setForeground((curApaState == 0 ? cs.darkgreen : cs.rot));
     cs.ApacheBut.setText((curApaState == 0 ? "Stop" : "Start")); // HIER
     ImageIcon icon = new ImageIcon(SystemTrayConsole.class.getResource((curApaState == 0 ? "http://www.tutorials.de/forum/images/apachegruen.gif" : "http://www.tutorials.de/forum/images/apacherot.gif")));
     ApaM.setIcon(icon);
     
     cs.MYSQLstatus.setText((curMyState == 0 ? "läuft!" : "läuft nicht!"));
     cs.MYSQLstatus.setForeground((curMyState == 0 ? cs.darkgreen : cs.rot));
     cs.MYSQLbut.setText((curMyState == 0 ? "Stop" : "Start")); //HIER
     icon = new ImageIcon(SystemTrayConsole.class.getResource((curMyState == 0 ? "http://www.tutorials.de/forum/images/mysql_gruen.gif" : "http://www.tutorials.de/forum/images/mysql_rot.gif")));
     MyM.setIcon(icon);

     if(curApaShownState != curApaState)
     {
       String curLog = cs.LOGarea.getText();
       cs.LOGarea.setText(curLog+"\n"+getTime()+"Apache "+(curApaState == 0 ? "gestartet" : "gestoppt"));
     }
     if(curMyShownState != curMyState)
     {
       String curLog = cs.LOGarea.getText();
       cs.LOGarea.setText(curLog+"\n"+getTime()+"MYSQL "+(curMyState == 0 ? "gestartet" : "gestoppt"));
     }
  }

Und hier sind die beiden Layer + der Button

Java:
    int result;
    String version = f.ApacheVersion();
    String[] version1 = version.split("/");
    result = f.check_service("Apache2");
    
    ApacheBut.setText((result == 0 ? "Stop" : "Start")); //Dieser Button verschwindet
    ApacheBut.setMargin(new Insets(4, 4, 4, 4));          // zur Hälfte hinter ...
    ApacheBut.setBounds(150,15,50,20);
    ApacheBut.setBackground(c1);
    cp.add(ApacheBut);
    
    Apache.setBounds(20, 10, 190, 15);
    Apache.setText("Apache "+version1[1]);
    Apache.setBackground(c1);
    Apache.setForeground(Color.black);
    Apache.setOpaque(true);
    cp.add(Apache);
    Apachestatus.setBounds(20, 25, 190, 15);

    Apachestatus.setText((result == 0 ? "läuft!" : "läuft nicht!"));  //... diesem Layer
    Apachestatus.setBackground(c1);
    Apachestatus.setForeground((result == 0 ? darkgreen : rot));
    Apachestatus.setOpaque(true);
    cp.add(Apachestatus);

Wie mir so eben auffällt, ist dass nicht immer so.
Zudem wird der Button sichtbar, sobald irgendetwas ÜBER meinem Programm steht, d.h. ich öffne zum Beispiel das Startmenü. Dieses verdeckt mein Programm hinter sich. Wenn ich es wieder schließe, ist der Button wieder komplett sichtbar.
Irgendwie alles n bissele komisch.

mb fanste
 

Anhänge

  • Projekt1.gif
    Projekt1.gif
    28,6 KB · Aufrufe: 12
Hallo!

Wahrscheinlich liegt das daran, dass du keinen Layoutmanager verwendest und du somit die Bürde auf dich nimmst selbst darauf zu achten, dass deine Komponenten immer entsprechend resized werden... einfachste Lösung: nimm einen passenden Layout Manager...

Gruß Tom
 
Hi,

Wenn ich aber ein Layout verwende, kann ich die einzelnen Label, Buttons, usw ja nicht mehr so positionieren, wie ich es gerne hätte.

Die Anordnung sollte so sein, wie hier auf dem Bild. Das habe ich aber mit keinem dieser Layouts hinbekommen. Wenn es doch möglich ist, mit felchen Funktionen/Befehlen kann ich die einzelnen Flächen dann so anordnen? (Man bedenke, dass da Label übereinander liegen).

mb fanste
 

Anhänge

  • Projekt2.jpg
    Projekt2.jpg
    48 KB · Aufrufe: 29
Also mit einem GridbagLayout kriegts't du das bestimmt so hin, ich bau morgen mal ein Beispiel..(wenn's keiner vor mir macht.. ;) )
 
Hi,

Ich hab nochmals alle Layouts ausprobiert. Ich habe jetz das BorderLayout genommen. ich weiß jetzt auch, warum es vorher nach nichts ausgesehen hat. Das Layout nimmt immer das letzte Objekt, welches ich dem frame hinzufüge, und setzt es auf die totale Breite und Höhe des Fensters. Hab jetz einfach noch einen zusätzlichen Label erstellt und fertig.

@elmato:
Falls du noch nicht mit angefangen hast, brauchst du es nichtmehr machen. Wenn doch, kannst du ja selbst entscheiden.

Auf jeden fall schonmal Danke an euch, die geholfen haben, helfen wollten.
 
Zurück