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

JScrollPane不工作

况庆
2023-03-14

这是我第一次练习秋千。可能我做了一些严重错误的事情。
我有一个带选项卡的UI,其中每个选项卡都是JPanel(此选项卡添加到JTabbedPane)。我根据用户输入在JPanel中添加JTextField的数量。我需要jpanel是可滚动的。我尝试了以下解决方案:

  • JScrollPane添加到选项卡
  • 将新的JPanel InnerPanel添加到JScrollPane
  • 将所有文本字段添加到InnerPanel

没有显示文本字段。

public Tab extends JPanel {

    private TipTailoringTab() {
        JPanel innerPanel =new JPanel();

        int y_cord = 20;
        for (int i = 0; i < USER_INPUT; i++) {
                JTextField TextField = new JTextField();
                TextField.setBounds(42, y_cord, 100, 20);
                innerPanel.add(TextField);
                y_cord = y_cord + 40;
        }
        Dimension preferredSize = new Dimension(400, 600);
        innerPanel.setPreferredSize(preferredSize);
        JScrollPane sPane = new JScrollPane(innerPanel);
        Dimension preferredSize1 = new Dimension(400, 300);
        sPane.setPreferredSize(preferredSize1);
        this.add(sPane);
    }
}

非常感谢任何帮助。

编辑
对于每个循环,我在Label上创建一个TextField,一个Slider。当n大时,我希望以下结构可以垂直滚动
TextField1 Slider1 Label1
TextField2 Slider2 Label2

TextFieldn幻灯片n标签n

共有1个答案

淳于飞文
2023-03-14

这里有一个非常简单的例子。我设置了首选的大小,这样它就可以强制滚动条变得可见/需要。有问题就问。

import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.*;

public class Test {
    private static final int USER_INPUT = 10;

    public Test() {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setResizable(false);


        JTabbedPane tabs = new JTabbedPane();
        tabs.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
        for (int i = 0; i < 5; i++) {
            tabs.addTab("Tab"+i, new TabPanel());
        }

        frame.add(tabs);
        frame.pack();
        frame.setVisible(true);
    }

    class TabPanel extends JPanel {    
        public TabPanel() {
            JPanel innerPanel = new JPanel();
            innerPanel.setLayout(new BoxLayout(innerPanel, BoxLayout.Y_AXIS));

            for (int i = 0; i < USER_INPUT; i++) {
                JPanel p = new JPanel(new BorderLayout());
                JLabel label = new JLabel("Label"+i);
                JTextField textArea = new JTextField();
                p.add(label, BorderLayout.NORTH);
                p.add(textArea, BorderLayout.CENTER);
                innerPanel.add(p);
            }

            JScrollPane scrollPane = new JScrollPane(innerPanel);
            scrollPane.setPreferredSize(new Dimension(400, 200));
            this.add(scrollPane);
        }
    }

    public static void main(String[] args) {
        new Test();
    }
}
 类似资料:
  • 有人能找出为什么我的不能工作。也许我错过了什么。我意识到这可能是愚蠢的没有任何更多的上下文比我所展示的,但请您询问,我将很乐意提供更多。 这是一段很大的代码,所以我不知道如何用它生成SSCE。您正在查看的是子类的构造函数,它包含3个面板。此时,只是一个。方法打开一个filechooser,然后加载选定的图像,该图像被绘制到上。图像显示良好,一切正常,除了我调整窗口大小时,没有滚动条。

  • 我有一个JFrame,它在JScrollPane中包含一个JSplitPane(因此,如果窗口很大,用户可以滚动)。JSplitPane包含作为顶部组件的JTabbedPane,以及作为底部组件的graphics。现在我想读一个。csv并在我的jtabbedpane中显示它。我可以使用第二个JScrollPane在列表中滚动。问题来了,当我在我的程序中导入。csv时,第一个JScrollPane似

  • 问题内容: 我有一个,其内容窗格为。为此,我添加了较小的,并且如预期的那样,如果添加太多,则会出现一个垂直滚动条。 问题是,我的小s包含一个过了。我想使用鼠标滚轮 仅 用于滚动面板外,而不是较小的滚动窗格。我已经设定到为小滚动面板,但如果我朝任意方向滚动,以及鼠标越过,滚动不工作了。 有什么建议吗? 问题答案: 您可以尝试将滚轮事件从内部滚动窗格转发到其父级。

  • 问题内容: 我是Java Swing的新手,并尝试在Java代码上使用“滚动”窗格,但是它不起作用。滚动窗格是在垂直方向上添加到框架上的,但无法使用。 问题答案: 您应该创建自己的面板,该面板扩展为包含所有复选框,并且在此面板中,重写方法如下: 并在您的代码中使用它:

  • 问题内容: 我扩展了JScrollPane并向其中添加了几个组件。当我将滚动窗格添加到JFrame时,不显示任何组件。如果我的类扩展了(例如,JPanel),然后将其添加到独立的JScrollPane中,则一切正常。我无法理解这种行为。谁能解释我,为什么会发生? 这是两种变体(一种有效,一种无效): 此变体不起作用: 这个很好用: 问题答案: 您可能不需要或不想扩展JScrollPane,但是无论

  • jScrollPane这个jQuery插件可以让你通过简单的CSS设置就能够替换所有分块元素在浏览器中默认的垂直滚动条样式。