Java 如何使用grouplayout在swing中创建图像滑块?

Java 如何使用grouplayout在swing中创建图像滑块?,java,swing,grouplayout,Java,Swing,Grouplayout,您好,我正在尝试使用创建来创建桌面应用程序我正在使用组布局来创建mu Gui我尝试创建图像滑块,但我无法实现如何实现这一点 当我运行我的程序时,它抛出异常ArrayIndexOutofBound请求解决我的问题 public class MyGui3 extends JFrame { private ImageIcon myImage1 = new ImageIcon ("E:\\SOFTWARE\\TrainPIS\\res\\drawable\\yellow.png");

您好,我正在尝试使用创建来创建桌面应用程序我正在使用组布局来创建mu Gui我尝试创建图像滑块,但我无法实现如何实现这一点 当我运行我的程序时,它抛出异常ArrayIndexOutofBound请求解决我的问题

public class MyGui3 extends JFrame {

      private ImageIcon myImage1 = new ImageIcon ("E:\\SOFTWARE\\TrainPIS\\res\\drawable\\yellow.png");
    private ImageIcon myImage2 = new ImageIcon ("E:\\SOFTWARE\\TrainPIS\\res\\drawable\\c.jpg");
    private ImageIcon myImage3 = new ImageIcon ("E:\\SOFTWARE\\TrainPIS\\res\\drawable\\yellow.png");
    private ImageIcon myImage4 = new ImageIcon ("E:\\SOFTWARE\\TrainPIS\\res\\drawable\\yellow.png");
    private ImageIcon[] myImages = new ImageIcon[4];

 private int curImageIndex=0;
 private JButton jButton1;
    private JButton jButton2;
    private JPanel jPanel1;
      private JLabel jLabel1;

    public MyGui3() {
        jPanel1 = new JPanel();
        jLabel1 = new JLabel(myImage1);

         myImages[0]=myImage1;
            myImages[1]=myImage2;
            myImages[2]=myImage3;
            myImages[3]=myImage4;
        jButton1 = new JButton();
        jButton2 = new JButton();

       //ImageGallery.add(new JLabel (myImage1));
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setPreferredSize(new java.awt.Dimension(1386, 768));

        jPanel1.setBackground(new java.awt.Color(153, 153, 255));

        jLabel1.setText("jLabel1");

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(197, 197, 197)
                .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 249, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(141, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(54, 54, 54)
                .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 284, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(130, Short.MAX_VALUE))
        );

        jButton1.setText("jButton1");

        jButton2.setText("jButton2");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(455, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jButton1, javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jButton2, javax.swing.GroupLayout.Alignment.TRAILING))
                .addGap(124, 124, 124)
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(137, 137, 137))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(157, Short.MAX_VALUE)
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(143, 143, 143))
            .addGroup(layout.createSequentialGroup()
                .addGap(325, 325, 325)
                .addComponent(jButton1)
                .addGap(18, 18, 18)
                .addComponent(jButton2)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );



  jButton1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae){
//OptionPane.showMessageDialog(frame,"Welcome to allhabad High Court");

if(curImageIndex>0 && curImageIndex <= 3)
                    { jPanel1.remove(0);
                        curImageIndex=curImageIndex-1;
                        ImageIcon TheImage= myImages[curImageIndex];

                        jLabel1 = new JLabel(TheImage);
                        jPanel1.validate();
                        jPanel1.repaint(); 
                    }
                else 
                    {   
                        jPanel1.remove(0);
                      jLabel1 = new JLabel(myImage1);
                        curImageIndex=0;
                        jPanel1.validate();
                        jPanel1.repaint();
                    }

}
});

   jButton2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae){
//JOptionPane.showMessageDialog(frame,"Welcome to allhabad High Court");


    if(curImageIndex>=0 && curImageIndex < 3)
                {    jPanel1.remove(0);
                    curImageIndex = curImageIndex + 1;
                    ImageIcon TheImage= myImages[curImageIndex];
                   jLabel1 = new JLabel(TheImage);
                    jPanel1.validate();
                    jPanel1.repaint(); 
                }
            else 
                {   
                    jPanel1.remove(0);
                   jLabel1 = new JLabel(myImage4);
                    curImageIndex=3;
                    jPanel1.validate();
                     jPanel1.repaint();
                }


}
});

        setTitle("Find");
        pack();
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }

    public static void main(String args[]) {
       MyGui3 g1=new MyGui3();

                g1.setVisible(true);
                g1.setExtendedState(JFrame.MAXIMIZED_BOTH);
                g1.setBackground(Color.yellow);
    }
}
公共类MyGui3扩展了JFrame{
私有图像图标myImage1=新图像图标(“E:\\SOFTWARE\\TrainPIS\\res\\drawable\\yellow.png”);
私有图像图标myImage2=新图像图标(“E:\\SOFTWARE\\TrainPIS\\res\\drawable\\c.jpg”);
私有图像图标myImage3=新图像图标(“E:\\SOFTWARE\\TrainPIS\\res\\drawable\\yellow.png”);
私有图像图标myImage4=新图像图标(“E:\\SOFTWARE\\TrainPIS\\res\\drawable\\yellow.png”);
私有图像图标[]myImages=新图像图标[4];
私有整数索引=0;
私有JButton jButton1;
私有JButton jButton2;
私人JPanel jPanel1;
私人JLabel jLabel1;
公共MyGui3(){
jPanel1=新的JPanel();
jLabel1=新的JLabel(myImage1);
myImages[0]=myImage1;
myImages[1]=myImage2;
myImages[2]=myImage3;
myImages[3]=myImage4;
jButton1=新JButton();
jButton2=新JButton();
//添加(新JLabel(myImage1));
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setPreferredSize(新java.awt.Dimension(1386768));
setBackground(新java.awt.Color(153153255));
jLabel1.setText(“jLabel1”);
javax.swing.GroupLayout jPanel1Layout=新的javax.swing.GroupLayout(jPanel1);
setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jpanellayout.createSequentialGroup()
.addGap(197197197)
.addComponent(jLabel1,javax.swing.GroupLayout.PREFERRED\u SIZE,249,javax.swing.GroupLayout.PREFERRED\u SIZE)
.addContainerGap(141,简称最大值))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jpanellayout.createSequentialGroup()
.addGap(54,54,54)
.addComponent(jLabel1,javax.swing.GroupLayout.PREFERRED\u大小,284,javax.swing.GroupLayout.PREFERRED\u大小)
.addContainerGap(130,简称最大值))
);
setText(“jButton1”);
setText(“jButton2”);
javax.swing.GroupLayout=newjavax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(布局);
layout.setHorizontalGroup(
createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,layout.createSequentialGroup()
.addContainerGap(455,简称最大值)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jButton1、javax.swing.GroupLayout.Alignment.training)
.addComponent(jButton2、javax.swing.GroupLayout.Alignment.training))
.addGap(124、124、124)
.addComponent(jPanel1,javax.swing.GroupLayout.PREFERRED\u SIZE,javax.swing.GroupLayout.DEFAULT\u SIZE,javax.swing.GroupLayout.PREFERRED\u SIZE)
.addGap(137、137、137))
);
layout.setVerticalGroup(
createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,layout.createSequentialGroup()
.addContainerGap(157,简称最大值)
.addComponent(jPanel1,javax.swing.GroupLayout.PREFERRED\u SIZE,javax.swing.GroupLayout.DEFAULT\u SIZE,javax.swing.GroupLayout.PREFERRED\u SIZE)
.addGap(143143143143))
.addGroup(layout.createSequentialGroup()
.addGap(325325325325)
.addComponent(jButton1)
.addGap(18,18,18)
.addComponent(jButton2)
.addContainerGap(javax.swing.GroupLayout.DEFAULT\u SIZE,Short.MAX\u VALUE))
);
jButton1.addActionListener(新ActionListener(){
已执行的公共无效行动(行动事件ae){
//OptionPane.showMessageDialog(框,“欢迎来到allhabad高等法院”);
如果(curImageIndex>0&&curImageIndex=0&&curImageIndex<3)
{jPanel1.remove(0);
curImageIndex=curImageIndex+1;
图像图标图像=我的图像[图像索引];
jLabel1=新的JLabel(图像);
jPanel1.validate();
jPanel1.repaint();
}
其他的
{   
jPanel1.remove(0);
jLabel1=新的JLabel(myImage4);
库里马指数=3;
jPanel1.validate();
jPanel1.repaint();
}
}
});
设置标题(“查找”);
包装();
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
公共静态void main(字符串参数[]){
MyGui3 g1=新的MyGui3();
g1.setVisible(真);
g1.setExtendedState(JFrame.MAXIMIZED_二者);
g1.立根背景(颜色:黄色);
}
}

提前感谢

该组布局是为UI设计软件设计的,而不是为人类设计的。避免使用它

相反,您有很多内置布局管理器可供选择,如果您需要通过嵌套布局(通过嵌套具有不同布局的组件)无法(或不应该)实现的特殊行为,则实现自定义布局管理器并不困难

我不确定你想要达到什么样的布局,但是如果你指的是一个可以在JSc中向下滚动的图像列表