我正在尝试将滚动条添加到以下代码中的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);
我不确定。请帮忙
答案 0 :(得分:4)
在Java Swing中,组件只能有一个父组件。
这意味着通过执行
panel2.add(scroll);
panel2.add(label);
从滚动窗格中删除标签。
您无需将标签添加到面板本身,因此只需删除该行并仅写入
panel2.add(scroll);