简体   繁体   English

调整框架大小时JEditor窗格出现问题

[英]Problem with JEditor Pane while resizing the frame

i am new to java GUI programming. 我是Java GUI编程的新手。 i am adding a JEditor pane (with HTML text ) inside a JScrollPane and added the scroll pane to a JFrame.The problem is when i re size the frame the JEditor pane vanishes. 我在JScrollPane内添加了一个JEditor窗格(带有HTML文本),并将滚动窗格添加到JFrame。问题是当我重新调整JEditor窗格的框架大小时消失了。

Any one help me ? 有人帮我吗?

Hi All , 大家好 ,

Following is the code : 以下是代码:

here another problem is i set weightx and weighty for the pane .But still the JEditor pane is not resizing when the frame is maximized/mimized 这里的另一个问题是我为窗格设置了weightx和weighty。但是,当帧最大化/最小化时,JEditor窗格仍无法调整大小

public class GridBagWithJEditorPane extends javax.swing.JFrame { 公共类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;

} }

Small working example. 小工作示例。 Show us your code else we won't be able to tell where your problem lies 向我们显示您的代码,否则我们将无法确定您的问题所在

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

The problem is you set weightX/Y values for the scroll pane, but not the panel. 问题是您为滚动窗格而不是面板设置weightX / Y值。

Why are you adding the scroll pane to a panel and then adding the panel to the frame? 为什么将滚动窗格添加到面板,然后将面板添加到框架? The panel is unnecessary. 该面板是不必要的。

I suggest not using GridBagLayout . 我建议不要使用GridBagLayout There are plenty of more modern layout managers out there ( MiGLayout , FormLayout , SpringLayout ...), and for that matter you can almost always get what you want just by nesting JPanels with BorderLayouts. 有很多现代布局管理器( MiGLayoutFormLayoutSpringLayout ...),为此,您几乎总是可以通过将JPanelsBorderLayouts.嵌套来获得所需的内容BorderLayouts. This will also make your layout problems much easier to diagnose. 这也将使您的布局问题更容易诊断。

Seriously, I've been programming in Java since 1995 and with Swing since 1998, and I've never bothered to learn GridBagLayout properly. 认真地说,自1995年以来我就一直使用Java进行编程,自1998年以来我就一直在使用Swing进行编程,而且我从来没有费心学习GridBagLayout It's just not worth the effort. 只是不值得付出努力。

solved the problem myself . 我自己解决了这个问题。 The solution is same as in 解决方法与

resize problem with JList? 调整JList的大小问题?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM