【问题标题】:Problem with JEditor Pane while resizing the frame调整框架大小时 JEditor 窗格出现问题
【发布时间】:2010-12-15 10:45:18
【问题描述】:

我是 java GUI 编程的新手。我在 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;

}

【问题讨论】:

  • 你能发布一些相关的代码吗....没有那个很难帮助:)
  • 确定我粘贴代码..
  • 嗨 Suraj .. 我已经添加了上面的代码 ..
  • 交叉发布在 JavaRanch。退出交叉发布。您认为我们喜欢浪费时间回答已经回答的问题吗?
  • 嗨 Camickr ..ya 我接受它在 java 牧场 .. 如果我得到解决方案我也会在这里发布并将这个问题的状态设置为“ANSWERED”.. 无论如何现在开始我避免这个有点交叉张贴..thnks留下我..

标签: java swing jscrollpane jeditorpane


【解决方案1】:

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

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

【讨论】:

  • 是的,它可以工作..但我正在使用网格包布局..我尝试粘贴代码。
【解决方案2】:

问题是您为滚动窗格设置 weightX/Y 值,而不是面板。

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

【讨论】:

  • 嗨 camickr ...我有这样的约束,我需要将滚动窗格添加到面板,然后将其添加到框架..我仍然有问题..如何解决?
  • 我给了你答案。事实上,我给了你两个建议。如果您想要第三个建议,那么请听听您之前得到的建议,以及更合适的布局管理器组合。无需嵌套 GrigBagLayouts。其他布局管理器更易于使用和理解。
【解决方案3】:

我建议不要使用GridBagLayout。有很多更现代的布局管理器(MiGLayoutFormLayoutSpringLayout...),就此而言,您几乎总是可以通过将JPanelsBorderLayouts. 嵌套来获得所需的内容。还将使您的布局问题更容易诊断。

说真的,我从 1995 年开始使用 Java 编程,从 1998 年开始使用 Swing,我从来没有费心正确地学习 GridBagLayout。只是不值得努力。

【讨论】:

  • 上面的布局是自定义的还是jdk本身就有的?
  • SpringLayout 从 Java 1.4 开始就在 JDK 中。
  • (而且 BorderLayout 一直在 Swing 中。)
【解决方案4】:

自己解决了这个问题。 解决方法同

resize problem with JList?

【讨论】:

  • 我在你显然自己解决问题前 5 小时给了你答案。
猜你喜欢
  • 2015-07-24
  • 1970-01-01
  • 1970-01-01
  • 2014-05-05
  • 1970-01-01
  • 1970-01-01
  • 2020-08-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多