当前位置: 首页 > 知识库问答 >
问题:

为什么我的JScrollPane不工作?

仉宸
2023-03-14

有人能找出为什么我的jscrollpane不能工作。也许我错过了什么。我意识到这可能是愚蠢的没有任何更多的上下文比我所展示的,但请您询问,我将很乐意提供更多。

public ApplicationFrame(String title, int x, int y, int width, int height) {
        // Constructor for the ApplicationFrame, no implicit Construc.
        setTitle(title);
        setResizable(true);
        setBounds(x, y, width, height);
                    setLayout(new BorderLayout());
        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        setIconImage(new ImageIcon(getClass().getResource("resources/topLeft.png")).getImage());
        topMostMenuBar = new TopMenuBar(this);
        setJMenuBar(topMostMenuBar.getMyJMenuBar());
        paneEdge = BorderFactory.createLineBorder(Color.gray);
        blackline = BorderFactory.createLineBorder(Color.black);
        this.frameContent = new ApplicationPanel() {
            //@Override
            protected void paintComponent(Graphics g) {
                super.paintComponent(g);
                g.drawImage(TI, 0, 0, null);
            }
        };
        mainImageScrollPane = new JScrollPane(frameContent);
        statusPanel = new ApplicationPanel(new Color(0xfff0f0f0));
        leftPanel = new ApplicationPanel(new Color(0xfff0f0f0));
        testPanel = new ColorPanel(new Color(0xfff0f0f0));
        testPanel.setPreferredSize(new Dimension(50,300));
        add(mainImageScrollPane, BorderLayout.CENTER );
        add(statusPanel, BorderLayout.SOUTH);
        add(leftPanel, BorderLayout.WEST);
        Container visibleArea = getContentPane();
        visibleArea.add(frameContent);
        setVisible(true);
        do {
            loadImageIn();
        } while (!initLoadSuccess);
        initButtons();
        leftPanel.add(testPanel, BorderLayout.SOUTH);
    } // end Constructor **

这是一段很大的代码,所以我不知道如何用它生成SSCE。您正在查看的是jframe子类的构造函数,它包含3个面板。此时,ApplicationPanel只是一个JPanelloadimagein()方法打开一个filechooser,然后加载选定的图像,该图像被绘制到FrameContent上。图像显示良好,一切正常,除了我调整窗口大小时,没有滚动条。

共有1个答案

贡建修
2023-03-14

您有这一行,它将ApplicationPanel添加到VisibleArea中...

visibleArea.add(frameContent);

也许您的意思是这样的,它将JScrollPane添加到VisibleArea(而JScrollPane已经包含了ApplicationPanel)...

visibleArea.add(mainImageScrollPane);

当您调用new JScrollPane(frameContent)时,它不会对其内部的面板做任何操作,它只是在外部添加了一个包装器。因此,如果您想要滚动功能,则需要引用JScrollPane包装器,而不是面板本身。

 类似资料:
  • 我今天想使用,但出现了如下错误: 所以我想我应该清除并重新安装(如下所示)https://www.rosehosting.com/blog/how-to-install-pip-on-ubuntu-16-04/)但仍然得到: 我怎样才能提高我的水平

  • 这是我第一次练习秋千。可能我做了一些严重错误的事情。 我有一个带选项卡的UI,其中每个选项卡都是(此选项卡添加到)。我根据用户输入在中添加的数量。我需要是可滚动的。我尝试了以下解决方案: 将添加到 将新的添加到 将所有文本字段添加到 没有显示文本字段。 非常感谢任何帮助。 编辑 对于每个循环,我在Label上创建一个TextField,一个Slider。当n大时,我希望以下结构可以垂直滚动 Tex

  • 问题内容: 首先,创建数据库。 我将“南”添加到已安装的应用程序中。然后,我转到本教程:http : //south.aeracode.org/docs/tutorial/part1.html 本教程告诉我要这样做: 太好了,现在我迁移了。 但这给了我这个错误… 因此,我使用Google(它永远都行不通。因此我在Stackoverflow上问了870个问题),并得到以下页面:http : //gr

  • 我正在构建一个鼓机,我已经存储了一个带有kick声音的示例头文件,它的值介于0和170之间。我想通过SPI将其发送到10位MCP4811 DAC,然后将其输出到3.5毫米音频插孔。 我有我的MISO,MOSI,SCK和复位引脚连接到我的USB编程器以及DAC。 这里是存储在"samples. h"中的音频文件的片段。 因此,它是2221位的样本。我想用SPI发送到DAC,频率=22 kHz。 我使

  • 我正在尝试为Xamarin.Forms创建一个自定义的ButtonRenderer。下面是一个简单的测试,我一直在尝试根据一些教程组合起来,但我似乎可以使它工作。