2017-09-17 11 views
1

J'ai un tableau HTML dans Jlabel (java), je veux afficher JLabel dans JInternalFrame ou je veux ajouter un petit tableau HTML dans Jinternalframe sans JLabel. comment puis-je atteindre? Je veux JLabel à la place de l'en-tête pas dans le corps.Comment ajouter JLabel dans JInternalFrame?

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

Vous avez créé votre 'JLabel', mais vous ne l'avez jamais ajouté à votre' JInternalFrame' ... –

+0

Plus un pour le concis [mcve]. –

+0

@Kevin Anderson, a édité mon message (je veux JLabel au lieu de l'en-tête) – srinivas

Répondre

0

ressembler à un problème en raison inattentif - il suffit d'ajouter votre label-jn contrôle:

jn.add(label); 

Voici le résultat de correction (j'ai également ajouté <tr><td>sdfsdfsf</td></tr> à votre table enter image description here

.

UPD: Après plusieurs clarifications en question, il a été décidé que cette nouvelle étiquette devrait être ajouté dans la barre de titre du JInternalFrame. Il peut également être fait:

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); 
} 

Le résultat sera suit:

enter image description here

Pour changer la hauteur de la barre de titre, vous pouvez utiliser la commande suivante:

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); 

Résultat :

enter image description here

Espérons que cela aidera.

+0

Je le veux (sdfsdfsc) à la place de l'en-tête, pas dans le corps. – srinivas

+0

@srinivas vous aimeriez l'avoir au-dessus du JButton? Cela dépend de comment vous allez écrire votre code HTML. Mon html était juste un exemple, parce que votre même ne contenait pas de cellules. =) –

+0

Dans la capture d'écran ci-dessus, je veux un tableau HTML à la place de (Je veux jlabel ici), pas au-dessus du Jbutton ou à côté de celui-ci, pouvez-vous suggérer si possible? – srinivas