JScroll Pane在JPanel中不可见。[JAVA]

时间:2017-02-03 11:09:22

标签: java swing

我正在尝试将滚动条添加到以下代码中的panel2,其中包含一个图像。问题是即使我添加JScrollPane,我在输出中没有滚动条,它也没有滚动,我只看到图像的一半。请帮忙。

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



public class manga extends JPanel{


public static void main(String[] args) {
    JFrame frame = new JFrame("Swing");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JPanel panel=new JPanel();
    panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));

    JPanel panel1=new JPanel();
    JPanel panel2=new JPanel();


    JButton button1=new JButton("PlAY");
    button1.setBounds(100,300,70,30);

    String path="01.jpg";
    ImageIcon imageIcon = new ImageIcon(path);
    JLabel label = new JLabel(imageIcon);


    panel.setPreferredSize(new Dimension(1000,1000));

    JScrollPane scroll = new JScrollPane(label);
   scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
    panel2.add(scroll);
   panel2.add(label);

   panel1.setBackground(new Color(255,255,255));
   panel2.setBackground(new Color(0,0,0));
   panel1.add(button1);
   panel.add(panel1);
   panel.add(panel2);
   frame.add(panel);
   frame.setTitle("MANGA READER 0.1");
   frame.setSize(1366,768);


  frame.setVisible(true);
 }
 }

我认为错误在于以下代码。

panel.setPreferredSize(new Dimension(1000,1000));

JScrollPane scroll = new JScrollPane(label);
scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
panel2.add(scroll);

我不确定。请帮忙

1 个答案:

答案 0 :(得分:4)

在Java Swing中,组件只能有一个父组件。

这意味着通过执行

panel2.add(scroll);
panel2.add(label);

从滚动窗格中删除标签。

您无需将标签添加到面板本身,因此只需删除该行并仅写入

panel2.add(scroll);