我一直在寻找一种将垂直滚动条添加到JPanel
的方法,该方法又被添加到CardLayout
面板。我查阅了这里所有关于实现可滚动的JPanel
的帖子,但我无法弄清楚如何使用这个特定的CardLayout
来实现它。 Oracle没有给出我可以使用的例子。CardLayout中的可滚动JPanel?
也许我没有使用JWindow
或我使用的任何其他组件的正确配置。
我已经放置了一个精简版的我的程序,我想实现一个垂直滚动条。
我的问题是如何在代码的底部实现JPanelScrollable
类,以便它可以成为可滚动的?
import javax.swing.*;
import java.awt.*;
import java.net.URL ;
public class Program2 extends JFrame
{
public Program2()
{
super("Flash CC");
Container2 container = new Container2();
setSize(700, 800);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setFocusable(true) ;
add(container);
setVisible(true) ;
}
public static void main(String[] args)
{
Program2 prog = new Program2();
}
}
class Container2 extends JPanel
{
private CardLayout cardLayout = new CardLayout() ;
private JPanel1 jPanelFirst = new JPanel1() ;
private JPanel2 jPanelSecond = new JPanel2() ;
private JPanelScrollable jPanelThird = new JPanelScrollable() ;
//Constructor
Container2()
{
this.setLayout(cardLayout) ;
this.setFocusable(true) ;
JScrollPane scrollFrame = new JScrollPane(jPanelThird);
this.add(jPanelFirst, "first card") ;
this.add(jPanelSecond, "second card") ;
this.add(scrollFrame , "third card") ;
cardLayout.show(this, "third card") ;
}
}
class JPanel1 extends JPanel
{
}
class JPanel2 extends JPanel
{
}
class JPanelScrollable extends JPanel
{
// here many, many, many elemnts will go
// and a vertical scroll barr is needed to view'm all.
JPanelScrollable()
{
this.setOpaque(true) ;
this.setLayout(null) ;
for(int i=0; i<30; i++)
{
JButton b = new JButton("Button" + i) ;
b.setBounds(0, (i * 100), 100, 50) ;
this.add(b) ;
}
}
}
谢谢我正在尝试这个选项,我也看到了之前的链接无济于事。 – user9349193413
它似乎没有工作。 – user9349193413
对我来说工作正常,请记住,直到你将组件放大,因此它的尺寸大于可视空间,滚动条将不会显示 – MadProgrammer