2009-11-11 2 views
0

Je suis novice dans la programmation d'interface graphique Java. J'ajoute un volet JEditor (avec du texte HTML) à l'intérieur d'un JScrollPane et j'ajoute le volet de défilement à un JFrame. Le problème est que lorsque je redimensionne l'image, le volet JEditor disparaît.Problème avec le volet JEditor lors du redimensionnement de l'image

quelqu'un me aider?

Salut à tous,

Voici le code:

ici un autre problème est que je mets weightx et de poids pour le volet .Mais encore le volet JEditor ne redimensionne lorsque le cadre est maximisée/mimized

GridBagWithJEditorPane public class étend javax.swing.JFrame {

public GridBagWithJEditorPane() { 
    initComponents(); 
} 

private void initComponents() { 
    java.awt.GridBagConstraints gridBagConstraints; 

    Panel1 = new javax.swing.JPanel(); 
    Button1 = new javax.swing.JButton(); 
    Label = new javax.swing.JLabel(); 
    Panel2 = new javax.swing.JPanel(); 
    ScrollPane = new javax.swing.JScrollPane(); 
    EditorPane1 = new javax.swing.JEditorPane(); 

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 
    getContentPane().setLayout(new java.awt.GridBagLayout()); 

    Panel1.setLayout(new java.awt.GridBagLayout()); 

    Button1.setText("Button"); 
    Panel1.add(Button1, new java.awt.GridBagConstraints()); 

    Label.setText("Label"); 
    Panel1.add(Label, new java.awt.GridBagConstraints()); 

    gridBagConstraints = new java.awt.GridBagConstraints(); 
    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 
    getContentPane().add(Panel1, gridBagConstraints); 

    Panel2.setLayout(new java.awt.GridBagLayout()); 

    ScrollPane.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); 

    EditorPane1.setContentType("text/html"); 
    EditorPane1.setText("<html>\r\n <head>\r\n\r\n </head>\r\n <body>\r\n <p style=\"margin-top: 0\">\r\n  \rHere some html text sakdjslakdjsa dksa dsakjdklsajdklsad klsajd lksad<br>\n  asdka;slkd;laskd;sa dlksa dksa dksald;lsakd;lsakd;l ska;dl sal;dk;salkd<br>\n  asas;alks;laKSL;Kalk ALSKLAks;laSAsLAKS;Lk;slk<br>\t\n alsdasldk;alskd;laskd;l sadksa;dlksa;ldk;saldk;alsd<br>\n </p>\r\n </body>\r\n</html>\r\n"); 
    EditorPane1.setMinimumSize(new java.awt.Dimension(15, 15)); 
    EditorPane1.setPreferredSize(new java.awt.Dimension(340, 220)); 
    ScrollPane.setViewportView(EditorPane1); 

    gridBagConstraints = new java.awt.GridBagConstraints(); 
    gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; 
    gridBagConstraints.weightx = 1.0; 
    gridBagConstraints.weighty = 1.0; 
    Panel2.add(ScrollPane, gridBagConstraints); 

    gridBagConstraints = new java.awt.GridBagConstraints(); 
    gridBagConstraints.gridx = 0; 
    gridBagConstraints.gridy = 1; 
    gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; 
    getContentPane().add(Panel2, gridBagConstraints); 

    pack(); 
} 

public static void main(String args[]) { 
    java.awt.EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      new GridBagWithJEditorPane().setVisible(true); 
     } 
    }); 
} 


private javax.swing.JButton Button1; 
private javax.swing.JEditorPane EditorPane1; 
private javax.swing.JLabel Label; 
private javax.swing.JPanel Panel1; 
private javax.swing.JPanel Panel2; 
private javax.swing.JScrollPane ScrollPane; 

}

+1

pouvez-vous envoyer un code lié .... tohelp difficile sans que :) –

+0

que je coller le code .. – Sidharth

+0

salut Suraj .. J'ai ajouté le code ci-dessus .. – Sidharth

Répondre

0

résolu moi-même le problème. La solution est la même que dans

resize problem with JList?

+0

Je vous ai donné la réponse 5 heures avant que vous avez apparemment résolu le problème vous-même. – camickr

0

Petit exemple de travail. Montrez-nous votre code sinon nous ne serons pas en mesure de dire où votre problème est

import javax.swing.*; 
public class Test { 
    public static void main (String args[]) { 
    SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
     JFrame frame = new JFrame("JScrollPane+JEditorPane"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.add(new JScrollPane(new JEditorPane())); 
     frame.pack(); 
     frame.setVisible(true); 
     } 
    }); 
    } 
} 
+0

ya que cela fonctionne .. bmais j'utilise la mise en page gridbag ..j'essaie de coller le code. – Sidharth

+0

salut Jitter ..Je ont ajouté le code ci-dessus – Sidharth

0

Le problème est que vous définissez des valeurs weightx/Y pour le volet de défilement, mais pas le panneau.

Pourquoi ajoutez-vous le volet de défilement à un panneau, puis en ajoutant le panneau au cadre? Le panneau est inutile.

+0

salut camickr ... j'ai la contrainte comme ça que je dois ajouter le scrollpane à un panneau, puis l'ajouter à un cadre .. j'ai encore problème ..comment pour résoudre ? – Sidharth

+0

Je vous ai donné la réponse. En fait, je vous ai donné deux suggestions.Si vous voulez une troisième suggestion, alors écoutez les conseils que vous avez reçus plus tôt et vous une combinaison plus appropriée de gestionnaires de disposition. Il n'est pas nécessaire d'imbriquer GrigBagLayouts. Les autres gestionnaires de disposition sont plus faciles à utiliser et à comprendre. – camickr

0

Je suggère de ne pas utiliser GridBagLayout. Il y a beaucoup de gestionnaires de disposition plus modernes (MiGLayout, FormLayout, SpringLayout ...), et d'ailleurs vous pouvez presque toujours obtenir ce que vous voulez juste en imbriquant JPanels avec BorderLayouts. Cela rendra également vos problèmes de mise en page beaucoup plus faciles à diagnostiquer .

Sérieusement, je programme en Java depuis 1995 et avec Swing depuis 1998, et je n'ai jamais pris la peine d'apprendre le GridBagLayout correctement. Cela ne vaut tout simplement pas la peine.

+0

est les dispositions ci-dessus sont personnalisés ou ils sont présents dans JDK lui-même? – Sidharth

+0

SpringLayout est dans le JDK depuis Java 1.4. –

+0

(Et BorderLayout a été dans Swing pour toujours.) –

Questions connexes