【发布时间】:2013-04-27 06:57:12
【问题描述】:
我正在尝试使用 java 中的 jPanel 和 jFrame 使图像可滚动。我在 drawQuestion 类中绘制图像,然后将 drawQuestion 添加到 jScrollPanel 并且它不会滚动。请告诉我我的错误在哪里我一直试图找到几天,但我仍然找不到它。 对不起我的英语不好。
main.java:
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
public class main{
private static int width = 800;
private static int height = 450;
public static void main(String[] args){
JFrame window = new JFrame("DPA Physics 2013 9 class");
drawQuestion question = new drawQuestion();
JScrollPane scroll = new JScrollPane(question);
scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setSize(width,height);
window.setLocationRelativeTo(null);
window.add(scroll);
window.setVisible(true);
}
}
drawQuestion.java:
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
public class drawQuestion extends JPanel{
private static final long serialVersionUID = 1L;
public void paintComponent(Graphics g){
super.paintComponent(g);
Image image1 = new ImageIcon(this.getClass().getResource("Page1.png")).getImage();
g.drawImage(image1,0,0,this);
}
}
【问题讨论】:
-
1)
drawQuestion应该被称为DrawQuestion或更好的DrawableQuestion并且它应该返回与图像相同大小的首选尺寸。 2)Image image1 = new ImageIcon(this.getClass().getResource("Page1.png")).getImage();图像应该在创建面板时加载,或者在构造函数中传递给面板。 3) 在滚动窗格中以JLabel显示图像要容易得多。 E.G.
标签: java image swing jframe jpanel