欢迎,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/