我试图在JFrame的contentpane中显示一个大图像.我想使图像或内容窗格可滚动,因为图像很大.我尝试使用Jscrollpane并将其添加到contentpane但它不起作用.有人寻找解决方案,但最终找不到解决方案.有人可以指导我吗?我的代码如下
FinalEnvironment.java
package environment;
import java.awt.*;
import java.net.URL;
import javax.swing.*;
public class FinalEnvironment{
public FinalEnvironment(){
    Image Eastlake;
    URL EastlakeURL = null;
    EastlakeURL = FinalEnvironment.class.getResource("/image1/eastlake_night.png");
    Eastlake = Toolkit.getDefaultToolkit().getImage(EastlakeURL);
    JFrame frame = new JFrame("UniCat World");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(800, 600);
    frame.setResizable(false);
    frame.setLocationRelativeTo(null);
    JMenuBar yellowMenuBar = new JMenuBar();
    Map map = new Map(800, 550, Eastlake);
    yellowMenuBar.setOpaque(true);
    yellowMenuBar.setBackground(Color.YELLOW);
    yellowMenuBar.setPreferredSize(new Dimension(800, 50));
    frame.setJMenuBar(yellowMenuBar);
    JScrollPane scroller = new JScrollPane(map);
    scroller.setAutoscrolls(true);
    scroller.setPreferredSize(new Dimension(800, 550));
    frame.getContentPane().add(scroller, BorderLayout.CENTER);
    frame.setSize(800, 600);
    frame.setVisible(true);
}
public static void main(String[] args){
    FinalEnvironment fe = new …Run Code Online (Sandbox Code Playgroud) 好吧,我不知道为什么会发生这种情况但是当我按下关闭按钮时,joptionpane将不会关闭.它不断弹出,我需要多次点击才能关闭它.
这里的代码快照
Point p;
    p   = onScreenLocation(0.134,0.019, eastlake);
    btn.setBounds(p.x,p.y,128,96);
    btn.setContentAreaFilled(false);
    btn.setBorderPainted(false);
    add(btn);
    btn.addMouseListener(new MouseAdapter(){
        public void mouseClicked(MouseEvent me){
        Object[] options = {"View Info","View Place","Close"};
        Object[] choice ={"Close"};
        int response = JOptionPane.showOptionDialog(null,"Apartment Area","Message",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE,ResidentImage,options,"Close");
        if(response == 0 ){
            JOptionPane.showOptionDialog(null, "Apartment Eastlake \n" +
                    "provides students with conducive room and reasonable prices ", "Message", JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,ResidentImage,choice,"Close");
        }
        else if(response == 1){
            JFrame ImageBox = new JFrame();
            ImageBox.setSize(300,400);
            ImageBox.add(new JLabel(ResidentImageView,SwingConstants.CENTER));
            ImageBox.setVisible(true);
        }
        else{
        }   
        }
    });
Run Code Online (Sandbox Code Playgroud)
完整的代码
package environment;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; …Run Code Online (Sandbox Code Playgroud)