关于#拆分面板#的问题,如何解决?

img


编写包含拆分面板(JSplitPane)的窗口程序,左边窗格包含三个按钮,右边窗格显示一副动图,当单击“显示滚动条”按钮,右边窗格显示水平和垂直滚动条,当单击“隐藏滚动条”按钮,右边窗格隐藏水平和垂直滚动条,当单击“退出”按钮时,退出程序。界面形式如下所示:

试试。


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

class ImagePanel extends JPanel {
  Image image;

  public ImagePanel() {
    image = Toolkit.getDefaultToolkit().createImage("d:/test/test.gif");
  }

  @Override
  public void paintComponent(Graphics g) {
    super.paintComponent(g);
    if (image != null) {
      g.drawImage(image, 0, 0, this);
    }
  }

}
public class Main {
  
  public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
      @Override
      public void run() {

        //myPanel1
        JButton button1 = new JButton("显示滚动条");
        JButton button2 = new JButton("隐藏滚动条");
        JButton button3 = new JButton("退出");
        JPanel myPanel1 = new JPanel();
        myPanel1.setLayout(new GridLayout(3,1,5,5));
        myPanel1.add(button1);
        myPanel1.add(button2);
        myPanel1.add(button3);

        //myPanel2
        JPanel myPanel2 = new ImagePanel();

        //splitPane
        JSplitPane splitPane = new JSplitPane();
        splitPane.setLeftComponent(myPanel1);
        splitPane.setRightComponent(myPanel2);
        splitPane.setDividerSize(1);
        splitPane.setOneTouchExpandable(true);
        splitPane.setContinuousLayout(true);
        splitPane.setDividerLocation(150);

        //frame
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 400);
        frame.setVisible(true);
        frame.setContentPane(splitPane);

        //event
        button3.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            System.exit(0);
          }
        });

      }
    });
  }
}

img