also wenn ich das richtig verstehe geh ich dann am besten hin un setze jeden einzelne "host_name" und "current_state" in ein eigenes label, zum Beispiel?
du kannst auch den Kram alles in ein JPanel packen und dort die paintComponent überschreiben...oder du arbeitest mit einer JEditorPane, dort kannst du auch alles formatieren, oder verschiendenen anderen Komponenten von swing
ArrayList<String> al =newArrayList<String>();StringBuilder sb =newStringBuilder();for(int i =0; i < al.size(); i++){
sb.append(al.get(i));}JLabel l =newJLabel(sb.toString());
Das geht nicht eine JLabel kann nur - evtl. HTML formatierte - Zeichenketten darstellen. Willst Du den Inhalt eines String Arrays mit JLabels darstellen, muss Du entweder alle Elemente des Arrays zu einem String verketten oder du stellst jedes Element des Arrays in einem eigenen JLabel dar. Teilweise Verkettung und Darstellung in mehren JLabels ist natürlich auch möglich.
hmm...das klappt nicht...ich werd es dann glaub so regeln müssen das ich jedes einzelne currentstate und hostname in ein eigenes label schriebe das würde besser gehn denk ich
weil wenn ich sowaqs hätte wie
Java:
label1 =newJLabel(<html>hallo<br></html>);
wäre das ja kein problem.
Aber wenn ich ja ne ganze list einfüge, kann ich ja nur an der list vorher schon verändern und wenn das nicht übernommen wird is doof oder?
Sowas müsste man dann während dem iterieren über die Liste zwischen drin einfügen. Den String kann man ja nach Belieben zusammenbauen.
Zur Darstellung besser geeignet wäre da wohl eine JTable o.ä. - ist aber nicht unbeding "anfängerfreundlich"
Also ich hab mir das mal mir der Tabelle angeschaut eigentlich ganz easy....wenn ich alles von hand eingeben würde....-.-''
Gibts ne dynamische Tabelle....wo jedes einzelne Hostname und Currentstate eingefügt wird nach dem es vom Filereader gelesen wurde...?
Wobei eigentlich alles kein problem wäre wenn diese list1 im label genau so angezeigt würde wie in einem
Java:
JOptionPane.showMessageDialog(frame,list1);
Weil hier bekomm ich alles so ich das will. Schön nach jeden current_state ein zeilenumbruch und alles schön untereinander. Aber in diesem label1 schreibt er mir alles nebeneinander =(???:L
ich wüsste keine Komponente in swing, die das auch ähnlich interpretiert...aber k.A:
so könnte man das machen...:
Java:
publicstaticvoidmain(String[] args){JFrame f =newJFrame();
f.setSize(300,300);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);ArrayList<String> al =newArrayList<String>();for(int i =0; i <25; i++){
al.add("blabaIrgendeinStatus: \t toll \r\n");}JTextArea ta =newJTextArea();for(int i =0; i < al.size(); i++){
ta.append(al.get(i));}JScrollPane jsp =newJScrollPane(ta);
f.add(jsp);
f.setVisible(true);}
jaa...hat sich dann erledigt...=) funktioniert ja soweit muss mich jetzt nur noch über refresh methoden schlau machen wie ich halt während der laufzeit mein jframe bzw jtextarea refreshen kann.
na ja, bei einer JTextArea ist das kein gr Problem:
Entweder per setText(String s) den alten Text löschen und den übergebenen setzen, oder den bisherigen behalten und mit append(String s) einen neuen hinzufügen.
Hm...also ich dachte eher an sowas wie. aktualisiere mir mein Fenster jede minute. Hab da auch schon das mit Swing Timer gelesen. Aber da blick ich irgendwie nicht durch.
Weil ich muss dann ja auch jede minute nochmal meine .txt datei lesen und komplett in mein Frame reinpushen
na dann, zeig mal eigeninitiative
Erstelle doch erstmal einen Thread der alle x sec irgendwas macht...wenn sich was ändert, dann "pusht" du das halt in deine TextArea , aber da das definitiv nicht mehr zu einem Thema "Schriftfarbe in JFrame" passt, solltest du ein neues Thema eröffnen...ODER mal vorher suchen, sollte sich schon was passendes finden lassen, auch, oder gerade hier im Forum^^
newThread(){publicvoidrun(){//DoSomething (ließ die Textdatei aus)finalString string = ergebnisAusDerTextdatei;SwingUtilities.invokeLater(newRunnable(){
jTextBox.setText(string);});try{Thread.sleep(60000);}catch(Exception e){
e.printStackTrace();//sollte eigentlich nicht passieren solange du den Thread nicht interruptest}}}.start();