2017-09-17 7 views
1

Ich habe eine HTML-Tabelle in Jlabel (Java), ich möchte JLabel in JInternalFrame anzeigen oder ich möchte kleine HTML-Tabelle in Jinternalframe ohne JLabel hinzufügen. Wie kann ich erreichen? Ich möchte JLabel anstelle von Header nicht im Körper haben.Wie fügt man JLabel in JInternalFrame hinzu?

package code; 

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

    import java.awt.FlowLayout; 

    class JInternalFrameTest extends JFrame { 

     JInternalFrameTest() 
     { 
      setTitle("JInternalFrame"); 
      setJInternalFrame(); 
      setSize(700,300); 
      setVisible(true); 
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     } 

     void setJInternalFrame() 
     { 
      String htmlContent = "<html><body><table border = '1'>"; 
      htmlContent += "<tr><td>Hai</td></tr></table></body></html>"; 
      JLabel label = new JLabel(); 
      label.setText(htmlContent); 
      JInternalFrame jn = new JInternalFrame("I want jlabel here",true,true,true); 
jn.add(label); 
      jn.setLayout(new FlowLayout()); 
      jn.add(new JButton("JButton")); 
      jn.setVisible(true); 
      add(jn); 
     } 
    } 

    public class JavaApp { 
     public static void main(String[] args) {  
      JInternalFrameTest jn = new JInternalFrameTest(); 
     } 
    } 
+2

Sie haben Ihre 'JLabel' erstellt, aber Sie haben sie nie zu Ihrem' JInternalFrame' hinzugefügt ... –

+0

Plus eine für die prägnante [mcve]. –

+0

@Kevin Anderson, Bearbeitete meinen Beitrag (Ich möchte JLabel anstelle von Header) – srinivas

Antwort

0

Blick wie ein Problem aufgrund unaufmerksam - einfach Ihre label-jn Steuerelement hinzufügen:

jn.add(label); 

Hier ist das Ergebnis der Fix (ich habe auch hinzugefügt <tr><td>sdfsdfsf</td></tr> auf den Tisch enter image description here

.

UPD: Nach einigen Klarstellungen in Frage wurde entschieden, dass dieses neue Etikett sein sollte in Titelleiste der JInternalFrame hinzugefügt.

werden folgende
void setJInternalFrame() { 
    String htmlContent = "<html><body><table border ='1' bgcolor='#EEEEEE'>" 
       + "<tr><td>Hai</td></tr></table></body></html>"; 

    JInternalFrame jn = new JInternalFrame("I want jlabel here", true, true, true); 

    JComponent titleBar = ((BasicInternalFrameUI) jn.getUI()).getNorthPane(); 

    JLabel label = new JLabel(); 
    label.setText(htmlContent); 
    label.setBounds(128, 0, 40, 20); 
    titleBar.add(label); 

    jn.setLayout(new FlowLayout()); 
    jn.add(new JButton("JButton")); 
    jn.setVisible(true); 
    add(jn); 
} 

Das Ergebnis: für die Titelleiste

enter image description here

zum Ändern der Höhe Sie folgenden Befehl verwenden können: Es kann auch geschehen

titleBar.setPreferredSize(new Dimension(titleBar.getPreferredSize().width, 100)); 
// don't forget to set a proper size for the label 
label.setBounds(128, 10, 40, 100); 

Ergebnis :

enter image description here

Hoffe, das wird helfen.

+0

Ich möchte dies (sdfsdfsc) anstelle von Header, nicht im Körper. – srinivas

+0

@srinivas Sie möchten es über dem JButton haben? Es hängt davon ab, wie Sie Ihren HTML-Code schreiben. Mein html war nur ein Beispiel, weil Sie sogar keine Zellen enthielten. =) –

+0

In dem erwähnten Screenshot möchte ich HTML-Tabelle anstelle von (ich möchte hier jabel), nicht über der J-Taste oder daneben, kannst du bitte vorschlagen, wenn möglich? – srinivas

Verwandte Themen