java - 在 java Swing 中使用特定 JButtons 在容器上垂直滚动

标签 java swing jscrollpane

欢迎,java-swing 程序员。 我想向您介绍我最近的一期,因为我一次又一次地追赶我的尾部。我用 JPanel 容器创建了简单的 JFrame(我也试过 JList)。在这里,我使用 BoxLayout 和一堆 JButton,它们是垂直对齐的,就像我想要的那样。

问题来了:框架需要滚动,但只有垂直的。我确实希望看到没有水平滚动的按钮的完整可包装名称,只有垂直滚动。其中的文字仍应换行,垂直滚动条应随着框架变细而变长。简单地将容器添加到 JScrollPane 会使按钮失去其标题环绕功能,并出现不希望的水平滚动。值得一提的是,按钮的文字是动态的,它会根据不同的 Action 而变化,所以 BoxLayout 在我看来是最好的选择。
我希望实现的效果与 JTextArea 类似,但我的 JScrollPane 将滚动向下/向上按钮而不是文本。

我没有找到任何简单的解决方案,希望破灭了!我指望你的技能。
先感谢您。在这里你可以使用一些代码,因为我的描述可能不够清楚:

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

public class Main extends JFrame {

    public Main() {

        setLayout(new GridLayout(0, 1, 10, 10));

        JPanel panel = new JPanel();
        panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));

        final JButton tester0 = new JButton("<html>primodial one, the mighty tester of wrapping");
        panel.add(tester0);

        panel.add(new JButton("one"));
        panel.add(new JButton("<html> second one, great knight of the Order of the Didgeridoo"));
        panel.add(new JButton("three"));
        panel.add(new JButton("four"));
        panel.add(new JButton("five"));
        panel.add(new JButton("six"));
        panel.add(new JButton("seven"));
        panel.add(new JButton("eight"));
        panel.add(new JButton("nine"));
        panel.add(new JButton("ten"));
        panel.add(new JButton("eleven"));
        panel.add(new JButton("twelve"));

        add(panel);

//        JScrollPane scroll2 = new JScrollPane(panel);
//        add(scroll2);        
//        final JScrollBar scrollBar1 = scroll2.getVerticalScrollBar();
////        scrollBar1.
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            public void run() {
                Main frame = new Main();
                frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
                //frame.pack();
                frame.setSize(270, 200);
                frame.setVisible(true);
            }
        });
    }

}

最好的问候!

最佳答案

听起来你可能想要 Wrap Layout这将根据需要换行到下一行。

关于java - 在 java Swing 中使用特定 JButtons 在容器上垂直滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20384627/

相关文章:

java - 为什么当字面上调用方法时,java不能使用线程上下文类加载器?

Java - 为什么我在 JFrame 中看不到我的列表?

javascript - jQuery 选择 : Uncaught NotFoundError: Failed to execute 'appendChild' on 'Node' :

javax.resource.spi.work.ExecutionContext

java - 输出的linkedstack大小始终为0?

java - ProgressMonitorInputStream - 进度条不显示真实进度

java - AWT 面板未在 JFX 中渲染

java - 使用 Java2D 图形绘制时调整 JScrollPane 中的滚动条大小?

Java JTextPane 向 JScrollPane 添加空白区域

java - 如何在 Spring MVC 3 中添加 Controller ?