Java 无法在jframe内的jscrollpane中添加图像

Java 无法在jframe内的jscrollpane中添加图像,java,swing,Java,Swing,我正在尝试使用jscroll窗格将图像添加到jframe中。我尝试了一些操作,但图像仅显示在背景中。类似于下面的图像编辑器 这是我的密码: private void initComponents(){ jScrollPane1 = new javax.swing.JScrollPane(); ImageImplement panel = new ImageImplement(new ImageIcon(mean.get(0)).getImage()); jS

我正在尝试使用jscroll窗格将图像添加到jframe中。我尝试了一些操作,但图像仅显示在背景中。类似于下面的图像编辑器

这是我的密码:

   private void initComponents(){
     jScrollPane1 = new javax.swing.JScrollPane();
     ImageImplement panel = new ImageImplement(new ImageIcon(mean.get(0)).getImage());
     jScrollPane1.add(panel); setVisible(true); setSize(400,400); setDefaultCloseOperation(EXIT_ON_CLOSE);
   }
   class ImageImplement extends JScrollPane { 
     private Image img; 
     public ImageImplement(Image img) { this.img = img;
     Dimension size = new Dimension(img.getWidth(null), img.getHeight(null)); 
     setPreferredSize(size);
     setMinimumSize(size);
     setMaximumSize(size); 
     setSize(size); 
     setLayout(null); } 
     public void paintComponent(Graphics g) { 
     g.drawImage(img, 0, 0, null); } 
     } 

不要扩展JScrollPane,也不要进行自定义绘制

相反,您只需创建一个带有
ImageIcon
JLabel
。然后将标签添加到滚动窗格,将滚动窗格添加到框架

因此,基本逻辑是:

ImageIcon icon = new ImageIcon(...);
JLabel label = new JLabel( icon );
JScrollPane scrollPane = new JScrollPane( label );
frame.add(scrollPane, BorderLayout.CENTER);

不要扩展JScrollPane,也不要进行自定义绘制

相反,您只需创建一个带有
ImageIcon
JLabel
。然后将标签添加到滚动窗格,将滚动窗格添加到框架

因此,基本逻辑是:

ImageIcon icon = new ImageIcon(...);
JLabel label = new JLabel( icon );
JScrollPane scrollPane = new JScrollPane( label );
frame.add(scrollPane, BorderLayout.CENTER);

那么,我该如何设置image@ani你没有。标签将根据图像的尺寸自动确定其首选大小。您能告诉我如何用新的标签替换JScrollPane中的当前图像吗image@ani,替换标签中的图标。阅读JLabel API以了解适当的“setter”方法。我在这里问了这个问题,并给出了代码……但它似乎不起作用,但我该如何设置image@ani你没有。标签将根据图像的尺寸自动确定其首选大小。您能告诉我如何用新的标签替换JScrollPane中的当前图像吗image@ani,替换标签中的图标。阅读JLabel API以了解适当的“setter”方法。我在这里问了这个问题,并给出了代码……但它似乎不起作用1)要更快地获得更好的帮助,请发布一个或。2) 例如,获取图像的一种方法是热链接到中看到的图像。3) Java GUI必须在不同的操作系统、屏幕大小、屏幕分辨率等上工作,在不同的地区使用不同的PLAF。因此,它们不利于像素完美布局。而是使用布局管理器,或与。。。。布局的填充和边框。4)
g.drawImage(img,0,0,null)
因为每个
JComponent
都是
ImageObserver
,所以最好是
g.drawImage(img,0,0,this)1)要更快获得更好的帮助,请发布或。2) 例如,获取图像的一种方法是热链接到中看到的图像。3) Java GUI必须在不同的操作系统、屏幕大小、屏幕分辨率等上工作,在不同的地区使用不同的PLAF。因此,它们不利于像素完美布局。而是使用布局管理器,或与。。。。布局的填充和边框。4) 
g.drawImage(img,0,0,null)
因为每个
JComponent
都是
ImageObserver
,所以最好是
g.drawImage(img,0,0,this)