Java 调整帧大小时,JEditor窗格出现问题

Java 调整帧大小时,JEditor窗格出现问题,java,swing,jscrollpane,jeditorpane,Java,Swing,Jscrollpane,Jeditorpane,我不熟悉JavaGUI编程。我在JScrollPane中添加了一个JEditor窗格(带有HTML文本),并将滚动窗格添加到JFrame中。问题是当我重新调整框架的大小时,JEditor窗格消失了 有人帮我吗 大家好 代码如下: 这里的另一个问题是我为窗格设置了weightx和weighty,但是当帧被最大化/模拟时,JEditor窗格仍然没有调整大小 公共类GridBagWithJEditorPane扩展了javax.swing.JFrame{ public GridBagWithJEdito

我不熟悉JavaGUI编程。我在JScrollPane中添加了一个JEditor窗格(带有HTML文本),并将滚动窗格添加到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;
public gridbag with jeditorpane(){
初始化组件();
}
私有组件(){
java.awt.GridBagConstraints GridBagConstraints;
Panel1=newjavax.swing.JPanel();
Button1=newjavax.swing.JButton();
Label=newjavax.swing.JLabel();
Panel2=newjavax.swing.JPanel();
ScrollPane=newjavax.swing.JScrollPane();
EditorPane1=newjavax.swing.JEditorPane();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
getContentPane().setLayout(新java.awt.GridBagLayout());
Panel1.setLayout(新java.awt.GridBagLayout());
按钮1.设置文本(“按钮”);
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(新java.awt.GridBagLayout());
setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL\u SCROLLBAR\u ALWAYS);
EditorPane1.setContentType(“text/html”);
EditorPane1.setText(“\r\n\r\n\r\n\r\n\r\n

\r\n\r有一些html文本sakjslakdjsa dksa dsakjdklsajdklsad klsajd lksad
\n asdka;slkd;laskd;laskd;sa dlksa dksa dksa dksa;lsakd;l ska;dl sal;dk;salkd
\n ass;laKSL;Kalk;Lk;Lk;slk
\t\n alsdasl;alskd;laskd;l sadka;dlksa;dlksa;ldk;alsd


}

小型工作示例。向我们展示您的代码,否则我们将无法判断您的问题所在

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

问题是您为滚动窗格设置了权重X/Y值,但没有为面板设置权重X/Y值


为什么要将滚动窗格添加到面板中,然后将面板添加到框架中?面板是不必要的。

我建议不要使用
GridBagLayout
。现在有很多更现代的布局管理器(
MiGLayout
FormLayout
SpringLayout
)因此,只要将
JPanels
BorderLayouts嵌套,您几乎总能得到想要的东西。
这也会使布局问题更容易诊断


说真的,我从1995年开始用Java编程,从1998年开始用Swing编程,但我从来没有认真学习过GridBagLayout。这不值得努力。

我自己解决了这个问题。 解决方案与中的相同


你能发布一些相关的代码吗……没有这些很难帮助:)当然我会粘贴代码..嗨,苏拉杰..我已经添加了上面的代码..在JavaRanch交叉发布。退出交叉发布。你认为我们喜欢浪费时间回答已经回答的问题吗?嗨,Camickr..是的,我在java ranch接受它..如果我得到解决方案,我会在此处输入ost,并将此问题的状态设置为“已回答”".. 不管怎样,从现在开始,我避免了这种交叉发帖。我想留下来。是的,这很有效。。B但我使用的是gridbag布局..我尝试粘贴代码。嗨,camickr。。。我有这样的约束,我需要将滚动窗格添加到面板,然后将其添加到框架。。我仍然有问题…如何解决?我给了你答案。事实上,我给了你两个建议。如果你想要第三个建议,那么听听你之前得到的建议,你可以选择一个更合适的布局管理器组合。没有必要在格里格巴格劳特家安家。其他布局管理器更易于使用和理解。上面的布局是自定义的还是存在于jdk中?SpringLayout从Java 1.4开始就存在于jdk中。(而且BorderLayout一直处于摇摆状态。)在您显然自己解决问题之前的5个小时,我给了您答案。