我试图在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)