Java 滚动窗格未显示在JLabel上

Java 滚动窗格未显示在JLabel上,java,swing,jscrollpane,jlabel,Java,Swing,Jscrollpane,Jlabel,当我运行这个程序时,我在标签上看不到滚动条。我错过了什么 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Util1 { public static void main(String[] args) { new Util1(); } public Util1() { EventQueue.invokeLater(

当我运行这个程序时,我在标签上看不到滚动条。我错过了什么

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Util1
{
    public static void main(String[] args)
    {
        new Util1();
    }

    public Util1()
    {
        EventQueue.invokeLater(new Runnable() 
        {
            public void run() 
            {

                JFrame frame = new JFrame("Test");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(new ExamplePane());

                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true); 
            }
        });
    }

    protected class ExamplePane extends JPanel 
    {
        public ExamplePane() 
        {
            final JPanel panel = new JPanel(new GridBagLayout());
            final JLabel message = new JLabel("<html>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello</html>");

            message.setPreferredSize(new Dimension(500, 50));
            JScrollPane scroller = new JScrollPane( message, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
            scroller.setViewportView(message);

            panel.add(scroller);
            add(panel);
        }            
    }        
}
import java.awt.*;
导入java.awt.event.*;
导入javax.swing.*;
公共类Util1
{
公共静态void main(字符串[]args)
{
新Util1();
}
公共服务1()
{
invokeLater(新的Runnable()
{
公开募捐
{
JFrame=新JFrame(“测试”);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(新的BorderLayout());
frame.add(新的ExamplePane());
frame.pack();
frame.setLocationRelativeTo(空);
frame.setVisible(true);
}
});
}
受保护类ExamplePane扩展了JPanel
{
公共示例窗格()
{
最终JPanel面板=新JPanel(新GridBagLayout());
最终JLabel消息=新JLabel(“你好
你好
你好
你好
你好
你好
你好
你好
你好
你好
你好
你好
你好”); message.setPreferredSize(新维度(500,50)); JScrollPane scroller=新的JScrollPane(消息,JScrollPane.VERTICAL\u SCROLLBAR\u AS\u NEEDED,JScrollPane.HORIZONTAL\u SCROLLBAR\u NEEDED); scroller.setViewportView(消息); 面板。添加(滚动条); 添加(面板); } } }
要查看滚动条,请将“消息”JLabel包装到JPanel中,然后将此JPanel添加到JScrollPane,如下图所示:

    public ExamplePane() {
        final JPanel panel = new JPanel(new GridBagLayout());
        final JLabel message = new JLabel("<html>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello</html>");
        message.setPreferredSize(new Dimension(500, 50));

        final JPanel messagePanel = new JPanel();
        messagePanel.add(message);

        JScrollPane scroller = new JScrollPane(messagePanel, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        scroller.setPreferredSize(new Dimension(100, 50));

        panel.add(scroller);
        add(panel);
    }
public示例窗格(){
最终JPanel面板=新JPanel(新GridBagLayout());
最终JLabel消息=新JLabel(“你好
你好
你好
你好
你好
你好
你好
你好
你好
你好
你好
你好
你好”); message.setPreferredSize(新维度(500,50)); final JPanel messagePanel=new JPanel(); messagePanel.add(消息); JScrollPane scroller=新的JScrollPane(messagePanel,JScrollPane.VERTICAL\u SCROLLBAR\u AS\u NEEDED,JScrollPane.HORIZONTAL\u SCROLLBAR\u NEEDED); scroller.setPreferredSize(新尺寸(100,50)); 面板。添加(滚动条); 添加(面板); }
要查看滚动条,请将“消息”JLabel包装到JPanel中,然后将此JPanel添加到JScrollPane,如下图所示:

    public ExamplePane() {
        final JPanel panel = new JPanel(new GridBagLayout());
        final JLabel message = new JLabel("<html>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello</html>");
        message.setPreferredSize(new Dimension(500, 50));

        final JPanel messagePanel = new JPanel();
        messagePanel.add(message);

        JScrollPane scroller = new JScrollPane(messagePanel, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        scroller.setPreferredSize(new Dimension(100, 50));

        panel.add(scroller);
        add(panel);
    }
public示例窗格(){
最终JPanel面板=新JPanel(新GridBagLayout());
最终JLabel消息=新JLabel(“你好
你好
你好
你好
你好
你好
你好
你好
你好
你好
你好
你好
你好”); message.setPreferredSize(新维度(500,50)); final JPanel messagePanel=new JPanel(); messagePanel.add(消息); JScrollPane scroller=新的JScrollPane(messagePanel,JScrollPane.VERTICAL\u SCROLLBAR\u AS\u NEEDED,JScrollPane.HORIZONTAL\u SCROLLBAR\u NEEDED); scroller.setPreferredSize(新尺寸(100,50)); 面板。添加(滚动条); 添加(面板); }
要查看滚动条,请将“消息”JLabel包装到JPanel中,然后将此JPanel添加到JScrollPane,如下图所示:

    public ExamplePane() {
        final JPanel panel = new JPanel(new GridBagLayout());
        final JLabel message = new JLabel("<html>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello</html>");
        message.setPreferredSize(new Dimension(500, 50));

        final JPanel messagePanel = new JPanel();
        messagePanel.add(message);

        JScrollPane scroller = new JScrollPane(messagePanel, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        scroller.setPreferredSize(new Dimension(100, 50));

        panel.add(scroller);
        add(panel);
    }
public示例窗格(){
最终JPanel面板=新JPanel(新GridBagLayout());
最终JLabel消息=新JLabel(“你好
你好
你好
你好
你好
你好
你好
你好
你好
你好
你好
你好
你好”); message.setPreferredSize(新维度(500,50)); final JPanel messagePanel=new JPanel(); messagePanel.add(消息); JScrollPane scroller=新的JScrollPane(messagePanel,JScrollPane.VERTICAL\u SCROLLBAR\u AS\u NEEDED,JScrollPane.HORIZONTAL\u SCROLLBAR\u NEEDED); scroller.setPreferredSize(新尺寸(100,50)); 面板。添加(滚动条); 添加(面板); }
要查看滚动条,请将“消息”JLabel包装到JPanel中,然后将此JPanel添加到JScrollPane,如下图所示:

    public ExamplePane() {
        final JPanel panel = new JPanel(new GridBagLayout());
        final JLabel message = new JLabel("<html>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello<br>Hello</html>");
        message.setPreferredSize(new Dimension(500, 50));

        final JPanel messagePanel = new JPanel();
        messagePanel.add(message);

        JScrollPane scroller = new JScrollPane(messagePanel, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        scroller.setPreferredSize(new Dimension(100, 50));

        panel.add(scroller);
        add(panel);
    }
public示例窗格(){
最终JPanel面板=新JPanel(新GridBagLayout());
最终JLabel消息=新JLabel(“你好
你好
你好
你好
你好
你好
你好
你好
你好
你好
你好
你好
你好”); message.setPreferredSize(新维度(500,50)); final JPanel messagePanel=new JPanel(); messagePanel.add(消息); JScrollPane scroller=新的JScrollPane(messagePanel,JScrollPane.VERTICAL\u SCROLLBAR\u AS\u NEEDED,JScrollPane.HORIZONTAL\u SCROLLBAR\u NEEDED); scroller.setPreferredSize(新尺寸(100,50)); 面板。添加(滚动条); 添加(面板); }

消息。setPreferredSize
是更改布局管理器的错误开始。我拿出
面板
并将
ExamplePane
的布局管理器设置为
BorderLayout
,我想是html造成的。也许这里的第一个答案有帮助:@MadProgrammer-删除setPreferredSize并没有改变任何东西。@MadProgrammer-滚动窗格在GridbagLayout中不可用。我已将此代码从一个较大的代码中缩小-不可能更改为BorderLayoutThis
消息。setPreferredSize
是一个错误的开始更改布局管理器。我拿出
面板
并将
ExamplePane
的布局管理器设置为
BorderLayout
,我想是html造成的。也许这里的第一个答案有帮助:@MadProgrammer-删除setPreferredSize并没有改变任何东西。@MadProgrammer-滚动窗格在GridbagLayout中不可用。我已将此代码从一个较大的代码中缩小-不可能更改为BorderLayoutThis
消息。setPreferredSize
是一个错误的开始更改布局管理器。我拿出
面板
并将
ExamplePane
的布局管理器设置为
BorderLayout
,我想是html造成的。也许这里的第一个答案有帮助:@MadProgrammer-删除setPreferredSize并没有改变任何东西。@MadProgrammer-滚动窗格在GridbagLayout中不可用。我已经从一家更大的公司缩小了这个代码的范围