LayoutManager Borderlayout - NORTH aktualisieren

K

kicka1

Gast
Hi!

Hab folgendes Problem, in der Oberfläche soll mein NORTH Panel aktualsiert werden wobei der Rest gleich bleibt.
Möchte quasi dort den On/Offline Status anzeigen!

Aufbau schaut wie folgt aus:
Java:
public class Aufruf
{
        public static void main(String[] args) {
        new AufbauProg("Mein Name");
}


class AufbauProg
{
public AufbauProg(String TitelBenutzer)
{
 JFrame Fenster = new JFrame("Prog.Name "+ TitelBenutzer);

       // DEFINITION der einzelnen JPanels aufruf Nord Auswahl West East EG

        Fenster.setLayout(new BorderLayout());
        Fenster.setResizable(true);
        Fenster.setLocationRelativeTo(null);
        Fenster.add(aufruf, BorderLayout.CENTER);
        Fenster.add(Nord, BorderLayout.NORTH);
        Fenster.add(Auswahl, BorderLayout.SOUTH);
        Fenster.add(West, BorderLayout.WEST);
        Fenster.add(EastEG, BorderLayout.EAST);
        Fenster.setSize(800,600);
        Fenster.setVisible(true);


}
 

VfL_Freak

Top Contributor
Moin,

wie Michael... schon schrieb, fehlen ein paar Angaben von Dir und wohl in Deinem Code, da auch ich nicht sehe, als was bspw. "nord" deklariert ist ....

So es denn etwa ein Frame oder ein Panel ist, kannst ja hierauf mal ein repaint versuchen
Java:
JPanel jpNord = new JPanel();
Fenster.add( jpNord, BorderLayout.NORTH );

// ... irgendwelche Änderungen

jpNord.repaint();

Poste doch mal den gesamten Code ... ;)
Gruß
Klaus
 
K

kicka12

Gast
War ein bisl dürftig, sry!
Bin erst im Nachhinein darauf gekommen das es nett wäre, diesen ON/Off Test einzubaun.

Java:
public class Aufruf
{
        public static void main(String[] args) {
        new AufbauProg("Mein Name");
}

public class AufbauProg {
Image On;
boolean INET = false;
boolean Aenderung = false;
JPanel Nord = new JPanel();
JFrame Fenster = new JFrame("Haussteurung ");


public AufbauProg(String TitelBenutzer)
{
//InetVerbindung();
Image Raumplan;
int i=0;
Versuch("Ja");

        JPanel West= new JPanel();
        West.setLayout(new GridLayout(11,2));
        West.add(new JLabel("  Schaltungen Aktiv: "));
        West.add(new JLabel(""));
        West.add(new JLabel("  1.OG: "));
        West.add(new JLabel("0"));
        West.add(new JLabel("  2.OG: "));
        West.add(new JLabel("0"));
        West.add(new JLabel("  3.OG: "));
        West.add(new JLabel("0"));
 

        JPanel EastEG= new JPanel();
 
        EastEG.setLayout(new GridLayout(1,1));
        EastEG.add(new JLabel("Text ist"));
        EastEG.add(new JButton("Ein"));
        EastEG.add(new JButton("Aus"));
        EastEG.add(new JLabel("Label"));


        JPanel Auswahl = new JPanel();
        Auswahl.setLayout(new FlowLayout());
        JLabel Benutzer = new JLabel("PLAN LADEN:");
        JButton Knopf = new JButton("EG");
        JButton Knopf1 = new JButton("1.OG");
        JButton Knopf2 = new JButton("2.OG");
        Auswahl.add(Benutzer);
        Auswahl.add(Knopf);
        Auswahl.add(Knopf1);
        Auswahl.add(Knopf2);
        

        
        Fenster.setLayout(new BorderLayout());
        Fenster.setResizable(true);
        Fenster.setLocationRelativeTo(null);

        final HausPlan aufruf = new HausPlan();
        
        Fenster.add(aufruf, BorderLayout.CENTER);
        Fenster.add(Nord, BorderLayout.NORTH);
        Fenster.add(Auswahl, BorderLayout.SOUTH);
        Fenster.add(West, BorderLayout.WEST);
        Fenster.add(EastEG, BorderLayout.EAST);
        Fenster.setSize(800,600);
        Fenster.setVisible(true);
       

ActionListener al = new ActionListener() {
@Override public void actionPerformed( ActionEvent e ) {
    aufruf.LadeBilder("Erdgeschoß");
}
};
Knopf.addActionListener( al );

ActionListener a2 = new ActionListener() {
@Override public void actionPerformed( ActionEvent e ) {
    aufruf.LadeBilder("1.Obergeschoß");
}
};
Knopf1.addActionListener( a2 );

ActionListener a3 = new ActionListener() {
@Override public void actionPerformed( ActionEvent e ) {
   aufruf.LadeBilder("2.Obergeschoß");

}
};
Knopf2.addActionListener( a3 );

//Timer timer = new Timer();  - timer soll später diese Methode aufrufen
//timer.schedule (new OlineOfflineTest(), 0,6000);

}

public JPanel Versuch (String X)
{

    Nord.setLayout(new FlowLayout());
    ImageIcon OnBild;
    ImageIcon OffBild;
    OnBild = new ImageIcon("C:/PKE/HausProjekt/src/hausprojekt/Online.jpg");
    OffBild = new ImageIcon("C:/PKE/HausProjekt/src/hausprojekt/Offline.jpg");
    JLabel Online = new JLabel(OnBild );
    JLabel Offline = new JLabel(OffBild );


 try {
       InetAddress address1 = InetAddress.getByName("www.MeineDomain.de");
       System.out.println("Onnline " + address1.isReachable(1500));
       if(address1.isReachable(3500))
        {
        JLabel OFF = new JLabel("ONLINE");Nord.add(OFF);Nord.add(Online);

       }else{
        JLabel ON = new JLabel("OFFLINE");Nord.add(ON);Nord.add(Offline);}
         }
     catch (UnknownHostException e) {
       System.err.println("Unable to lookup www.timetoparty");
     }
     catch (IOException e) {
       System.err.println("Unable to reach www.timetoparty");
     }
    return Nord;
}


}

public class Plan extends JPanel{

  
    @Override
    public void paint (Graphics Pinsel)
    {
    }
}
 
K

kicka1

Gast
Nord.revalidate();

würd mir nur das eine Panel Neu laden - jedoch wie lösch ich den Inhalt von dem... bevor ich revalidate aufrufe?
 

Michael...

Top Contributor
So wie ich das sehe willst Du doch nur den Text in einem JLabel ändern!?!
Dazu muss man nicht gleicht das komplette Label austauschen, dafür gibt es Methoden:
Java:
label.setText("neuer Text");
Da ist dann auch kein repaint() und erst recht kein validate() notwendig.
 

VfL_Freak

Top Contributor
So wie ich das sehe willst Du doch nur den Text in einem JLabel ändern!?!
Dazu muss man nicht gleicht das komplette Label austauschen, dafür gibt es Methoden:
Java:
label.setText("neuer Text");
Da ist dann auch kein repaint() und erst recht kein validate() notwendig.

so gesehen hat Michael... recht!

Allerdings verstehe ich Deine Logik noch nicht wirklich ...
Das Label OFF bekommt den Text ONLINE und umgekehrt ???:L

Zudem bin ich jetzt nicht ganz sicher, ob Du einem Label wirklich ein Icon zuordnen kannst ... habe ich zumindest noch nie versucht ;)

Zudem solltest Du Dir noch ggf. Gedanken um die Positionierung Deiner Label machen ....

Gruß
Klaus
 
K

kicka12

Gast
Hab mit set Text noch immer selbiges Problem - aber in meinem Fall eh klar wenn ichs so mache...
ON.setText("Offline");
Nord.add(ON);

Aufbau mit BorderLayout sieht quasi so aus - zum Testen würd ich den Knopf in South
JPanel drücken und Nord sollte aktualisiert werden (zur Zeit schreibt er beim start Online wie gewollt-
beim aktualisieren durch button sollte es aber nur 1mal stehen nicht ein zweites Mal hinzugefügt werden)....

---------------------------------|
Nord/Online-Offline Anzeig
---------------------------------|
Center
---------------------------------|
South Knopf
---------------------------------|

Java:
public class AufbauProg {
Image On;
boolean INET = false;
boolean Aenderung = false;
JPanel Nord = new JPanel();
JFrame Fenster = new JFrame("Steuerung");
 
 
public AufbauProg(String TitelBenutzer)
{
//InetVerbindung();
Image Raumplan;
int i=0;

        JPanel Auswahl = new JPanel();
        Auswahl.setLayout(new FlowLayout());
        JLabel Benutzer = new JLabel("PLAN LADEN:");
        JButton Knopf = new JButton("EG");
        JButton Knopf1 = new JButton("1.OG");
        JButton Knopf2 = new JButton("2.OG");
        Auswahl.add(Benutzer);
        Auswahl.add(Knopf);
        Auswahl.add(Knopf1);
        Auswahl.add(Knopf2);
        Fenster.setLayout(new BorderLayout());
        Fenster.setResizable(true);
        Fenster.setLocationRelativeTo(null);
 
        Fenster.add(Auswahl, BorderLayout.SOUTH);
        Fenster.add(aufruf, BorderLayout.CENTER);
        Fenster.add(Nord, BorderLayout.NORTH);
        Fenster.setSize(800,600);
        Fenster.setVisible(true);
       
 
ActionListener a3 = new ActionListener() {
@Override public void actionPerformed( ActionEvent e ) {
   aufruf.LadeBilder("2.Obergeschoß");
   Versuch("Test");
 
}
};
Knopf2.addActionListener( a3 );
 
 
}

Java:
public JPanel Versuch (String X)
{
    ImageIcon OnBild;
    ImageIcon OffBild;
    OnBild = new ImageIcon("C:/src/hausprojekt/Online.jpg");
    OffBild = new ImageIcon("C:/src/hausprojekt/Offline.jpg");
    JLabel Online = new JLabel(OnBild );
    JLabel Offline = new JLabel(OffBild )

 try {
       InetAddress address1 = InetAddress.getByName("www.meinedomain.de");
       System.out.println("Onnline " + address1.isReachable(1500));
       if(address1.isReachable(3500))
        {
        JLabel OFF = new JLabel("");
        OFF.setText("Online");
        Nord.add(OFF);
        Nord.add(Online);
       }else{
        JLabel ON = new JLabel("");
        ON.setText("Offline");
        Nord.add(ON);
        Nord.add(Offline);
       }
         }
     catch (UnknownHostException e) {
       System.err.println("Unable to lookup ");
     }
     catch (IOException e) {
       System.err.println("Unable to reach ");
     }
    Nord.revalidate();
    return Nord;
}
 

Michael...

Top Contributor
Du solltest setText() auf das existierende Label anwenden, nicht jedes mal ein neues erzeugen ;-)
Hier mal ein Minimalbsp.:
Java:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class MyClass extends JFrame {
	public static void main(String[] s) {
		JFrame frame = new MyClass();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setBounds(0, 0, 300, 200);
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);
	}
	
	private JLabel statusLabel;
	
	public MyClass() {
		statusLabel = new JLabel("OFF", JLabel.CENTER);
		JButton button = new JButton("SWITCH");
		this.getContentPane().add(statusLabel, BorderLayout.NORTH);
		this.getContentPane().add(button, BorderLayout.SOUTH);
		
		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				if (statusLabel.getText().equals("OFF"))
					statusLabel.setText("ON");
				else
					statusLabel.setText("OFF");
			}
		});
	}
}
 
K

kicka1

Gast
THX! Habs hinbekommen!!!
Kleine Frage noch wenn, statt dem Text Buttons und Jfields anzeigen möchte,
muss ich jedes mal vorher JPanel.removeAll(); aufrufen oder gibts da andere Möglichkeiten?
 

Michael...

Top Contributor
removeXX ist für mich eigentlich das letzte Mittel der Wahl, dann muss man allerdings per validate() selbst für die Konsistenz der GUi sorgen.
Interessant für solche Zwecke ist oft auch das CardLayout
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Swing Borderlayout East über North AWT, Swing, JavaFX & SWT 5
A LayoutManager Höhe von NORTH beim BorderLayout ändern AWT, Swing, JavaFX & SWT 4
S Problem mit BorderLayout NORTH und SOUTH AWT, Swing, JavaFX & SWT 2
K JavaFX Resizing-Problem beim BorderLayout (Center Component) beim Arbeiten mit mehreren FXMLs AWT, Swing, JavaFX & SWT 2
L BorderLayout in BorderLayout verknüpfen AWT, Swing, JavaFX & SWT 2
M Bewegtes Bild im BorderLayout.CENTER AWT, Swing, JavaFX & SWT 6
F BorderLayout Hilfe bei Anzeige AWT, Swing, JavaFX & SWT 2
B AWT Panel größe im BorderLayout einstellen AWT, Swing, JavaFX & SWT 1
C Swing Borderlayout im JFrame AWT, Swing, JavaFX & SWT 4
C Swing Geschachteltes GUI mit BorderLayout - Vertikal & horizontal Verschieben AWT, Swing, JavaFX & SWT 1
P AWT BorderLayout AWT, Swing, JavaFX & SWT 2
A BorderLayout "Center" Inhalt wechseln AWT, Swing, JavaFX & SWT 1
S Swing [CLOSED] NullPointerException bei BorderLayout() AWT, Swing, JavaFX & SWT 8
S JScrollPane und BorderLayout AWT, Swing, JavaFX & SWT 1
Q JFrame/BorderLayout AWT, Swing, JavaFX & SWT 3
bluerob Panel im BorderLayout South wird nicht angezeigt AWT, Swing, JavaFX & SWT 5
M BorderLayout JPanel liegt nicht richtig an AWT, Swing, JavaFX & SWT 12
R BorderLayout AWT, Swing, JavaFX & SWT 4
C LayoutManager BorderLayout im richtigen Format beschriften AWT, Swing, JavaFX & SWT 10
C CardLayout in BorderLayout? AWT, Swing, JavaFX & SWT 36
T Borderlayout Ecken AWT, Swing, JavaFX & SWT 2
H Swing JInternalFrame, JDesktopPane und ein BorderLayout AWT, Swing, JavaFX & SWT 2
R Problem mit Box bzw BorderLayout AWT, Swing, JavaFX & SWT 6
G LayoutManager BorderLayout WEST Bereich auf maximale Größe beschränken AWT, Swing, JavaFX & SWT 19
P LayoutManager BorderLayout - Zweimal Norden ? AWT, Swing, JavaFX & SWT 4
E LayoutManager GridBagLayout in BorderLayout - Abstand bei Resizing AWT, Swing, JavaFX & SWT 2
R BorderLayout: EAST, CENTER, WEST AWT, Swing, JavaFX & SWT 5
2 AWT Borderlayout: Grafikelemente ein und ausblenden AWT, Swing, JavaFX & SWT 2
J LayoutManager BorderLayout - 2 Buttons in SOUTH nebeneinander platzieren? AWT, Swing, JavaFX & SWT 3
N JPanel vertikal im BorderLayout zentrieren AWT, Swing, JavaFX & SWT 2
S Anordnen von Buttons im BorderLayout AWT, Swing, JavaFX & SWT 6
F Im BorderLayout eine feste Grösse zuweisen! AWT, Swing, JavaFX & SWT 9
S JSplitpane in BorderLayout nutzen AWT, Swing, JavaFX & SWT 4
B Swing BorderLayout und JPanel AWT, Swing, JavaFX & SWT 3
A GUI Komponenten in Borderlayout zeichnen AWT, Swing, JavaFX & SWT 3
B BorderLayout AWT, Swing, JavaFX & SWT 8
S Swing BorderLayout + Backgroundcolor AWT, Swing, JavaFX & SWT 3
0din Austausch von JPanel in BorderLayout AWT, Swing, JavaFX & SWT 3
X Instanzieren und Zuweisen vom BorderLayout an Container nicht notwendig ? AWT, Swing, JavaFX & SWT 4
E AWT Formatierung in BorderLayout AWT, Swing, JavaFX & SWT 10
D Resizeverhalten BorderLayout AWT, Swing, JavaFX & SWT 3
calzone Swing und BorderLayout AWT, Swing, JavaFX & SWT 11
Strahlungsleck Problem mit dem Anzeigen von Elementen im BorderLayout AWT, Swing, JavaFX & SWT 6
R LayoutManager ähnlich BorderLayout, mit einer Ausnahme AWT, Swing, JavaFX & SWT 2
D BorderLayout.Center mit 3 Panel und dynamischer Größe AWT, Swing, JavaFX & SWT 2
P Probleme bei BorderLayout im JPanel AWT, Swing, JavaFX & SWT 7
G Komponente oben positionieren (BorderLayout) AWT, Swing, JavaFX & SWT 3
G BorderLayout - zentrieren AWT, Swing, JavaFX & SWT 1
S [BorderLayout]WEST/EAST sollen über ganze Höhe gehen; AWT, Swing, JavaFX & SWT 3
A BorderLayout Verhältnis festlegen? AWT, Swing, JavaFX & SWT 5
F Farbe für den Hintergrund eine BorderLayout-Teils AWT, Swing, JavaFX & SWT 5
O Probleme bei BorderLayout AWT, Swing, JavaFX & SWT 5
H Bei BorderLayout SOUTH minimieren AWT, Swing, JavaFX & SWT 3
DeeDee0815 Abstand ZUM BorderLayout AWT, Swing, JavaFX & SWT 13
K BorderLayout--> feste Größe AWT, Swing, JavaFX & SWT 2
D BorderLayout + Buttongröße ändern AWT, Swing, JavaFX & SWT 4
P JPanel im BorderLayout feste Größe/Position zuordnen AWT, Swing, JavaFX & SWT 3
L Alle Inhalte in BorderLayout.CENTER löschen? AWT, Swing, JavaFX & SWT 2
M Layout Problem (GrudBag- + BorderLayout) AWT, Swing, JavaFX & SWT 6
O GridBag IN BorderLayout? AWT, Swing, JavaFX & SWT 5
J BorderLayout / 1 Panel in Mitte und 1 Panel im Osten anordne AWT, Swing, JavaFX & SWT 6
F FlowLayout in BorderLayout AWT, Swing, JavaFX & SWT 4
D BorderLayout mit JTextField AWT, Swing, JavaFX & SWT 7
B BorderLayout.WEST (JTree strecken in Höhe) AWT, Swing, JavaFX & SWT 2
B BorderLayout/JSplitPane Problem beim Ausrichten AWT, Swing, JavaFX & SWT 5
F Anordnung im BorderLayout AWT, Swing, JavaFX & SWT 6
S Toolbar in einem BorderLayout verschieben AWT, Swing, JavaFX & SWT 4
M FlowLayout in BorderLayout einbinden? AWT, Swing, JavaFX & SWT 6
J Ermittlung der Ausrichtung einer Komponente im BorderLayout AWT, Swing, JavaFX & SWT 3
M AWT borderLayout AWT, Swing, JavaFX & SWT 7
R dummes BorderLayout :( AWT, Swing, JavaFX & SWT 8
H BorderLayout.setBackground AWT, Swing, JavaFX & SWT 2
J paint(Graphics g) im BorderLayout einem JPanel zuordnen &amp AWT, Swing, JavaFX & SWT 19
C Borderlayout und Checkboxgruppen AWT, Swing, JavaFX & SWT 3
frau-u Borderlayout - zusätzliche Zeile AWT, Swing, JavaFX & SWT 4
W Probleme mit BorderLayout AWT, Swing, JavaFX & SWT 2
G Komponente die im Center und North Bereich liegt zurückgebe? AWT, Swing, JavaFX & SWT 6
C Default table model aktualisieren AWT, Swing, JavaFX & SWT 7
G JavaFX BarChart während der Runtime aktualisieren AWT, Swing, JavaFX & SWT 4
T TableView aktualisieren AWT, Swing, JavaFX & SWT 1
W JavaFX TableView aktualisieren AWT, Swing, JavaFX & SWT 1
D JavaFX Label flackert beim aktualisieren AWT, Swing, JavaFX & SWT 12
J Swing JLabel Verknüpfung aktualisieren AWT, Swing, JavaFX & SWT 3
J JavaFX Label aktualisieren AWT, Swing, JavaFX & SWT 18
M Muss man die ObservableList aktualisieren? AWT, Swing, JavaFX & SWT 3
B Bounds aller Panels aktualisieren AWT, Swing, JavaFX & SWT 0
-DD Lobby/Spielerliste aktualisieren bei Suche AWT, Swing, JavaFX & SWT 1
T JFrame aktualisieren AWT, Swing, JavaFX & SWT 2
M JavaFX Automatisches Aktualisieren der Seite AWT, Swing, JavaFX & SWT 26
ralfb1105 Swing JTable aktualisieren AWT, Swing, JavaFX & SWT 5
H JavaFX - Label aktualisieren AWT, Swing, JavaFX & SWT 1
D JTable nach INSERT aktualisieren /refreshen AWT, Swing, JavaFX & SWT 1
S Swing Mal wieder JTable Ansicht aktualisieren AWT, Swing, JavaFX & SWT 10
Z jLabel von Methode aus aktualisieren AWT, Swing, JavaFX & SWT 7
J JTextfield automatisch aus zweiter Klasse aktualisieren AWT, Swing, JavaFX & SWT 5
J Tableview Daten hinzufügen und aktualisieren AWT, Swing, JavaFX & SWT 5
lumpigerAffe Swing Jframe aktualisieren AWT, Swing, JavaFX & SWT 27
R Swing Durch JComboBox-Item eine TextArea aktualisieren AWT, Swing, JavaFX & SWT 2
C JavaFX TreeTableView aktualisieren AWT, Swing, JavaFX & SWT 10
R GUI Element in einer Methode aktualisieren (JTextPane) AWT, Swing, JavaFX & SWT 13

Ähnliche Java Themen

Neue Themen


Oben