Frage

Ich bin neu zu Java-GUI-Programmierung. Ich bin ein JEditor Fenster hinzugefügt (mit HTML-Text) in einem JScrollPane und die Bildlauffenster zu einem JFrame.The Problem hinzugefügt wird, wenn i Größe des Rahmen verschwindet die JEditor Scheibe wieder.

Jede Hilfe ich?

Hallo zusammen,

Im Folgenden finden Sie den Code ein:

hier ein anderes Problem ist, ich Satz weightx und gewichtig für die Scheibe .Aber noch der JEditor Bereich nicht Ändern der Größe ist, wenn der Rahmen maximiert ist / mimized

public class GridBagWithJEditorPane erweitert 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;

}

War es hilfreich?

Lösung 4

löste das Problem selbst. Die Lösung ist das gleiche wie in

Resize Problem mit JList?

Andere Tipps

Kleines Arbeitsbeispiel. Zeigen Sie uns Ihren Code sonst werden wir nicht in der Lage sein, zu sagen, wo Ihr Problem liegt

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

Das Problem ist, dass Sie weightx / Y-Werte für die Bildlauffenster festgelegt, nicht aber die Platte.

Warum Sie hinzufügen, die Scroll-Scheibe an eine Platte und dann die Platte mit dem Rahmen? Das Panel ist nicht erforderlich.

Ich schlage vor, mit GridBagLayout nicht. Es gibt viele moderneren Layout-Manager gibt (MiGLayout, FormLayout, SpringLayout ...) und was das betrifft kann man fast immer bekommen, was Sie gerade durch Verschachtelung JPanels mit BorderLayouts. möchten Dies wird auch Ihr Layout Probleme viel leichter zu diagnostizieren .

Im Ernst, ich habe seit 1995 in Java wurde Programmierung und mit Swing-seit 1998, und ich habe nie richtig zu lernen GridBagLayout gestört. Es ist einfach nicht die Mühe wert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top