0

私はJavaGUIプログラミングに不慣れです。JScrollPane内に(HTMLテキストを含む)JEditorペインを追加し、スクロールペインをJFrameに追加しています。問題は、フレームのサイズを変更するとJEditorペインが消えることです。

誰か助けてくれますか?

こんにちは、みんな 、

以下はコードです:

ここで別の問題は、ペインにweightxとweightyを設定することです。しかし、フレームが最大化/最小化されたときに、JEditorペインのサイズが変更されません。

パブリッククラスGridBagWithJEditorPaneは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;

}

4

4 に答える 4

0

小さな実例。あなたのコードを見せてください。さもないと、あなたの問題がどこにあるのかわかりません。

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);
      }
    });
  }
}
于 2009-11-11T13:41:25.677 に答える
0

問題は、スクロールペインにweightX / Y値を設定することですが、パネルには設定しません。

スクロールペインをパネルに追加してから、パネルをフレームに追加するのはなぜですか?パネルは不要です。

于 2009-11-12T05:57:21.217 に答える
0

使用しないことをお勧めしGridBagLayoutます。世の中にはもっと現代的なレイアウトマネージャーがたくさんあります(、、... MiGLayout) 。さらに言えば、ネストするだけでほとんどの場合、必要なものを取得できます。これにより、レイアウトの問題の診断もはるかに簡単になります。FormLayoutSpringLayoutJPanelsBorderLayouts.

真剣に、私は1995年からJavaで、1998年からSwingでプログラミングを行っており、GridBagLayout適切に学ぶことを決して気にしませんでした。努力するだけの価値はありません。

于 2009-11-12T09:27:53.117 に答える
0

自分で問題を解決しました。解決策はと同じです

JListのサイズ変更の問題?

于 2009-11-12T12:33:24.687 に答える