Если ваша цель состоит в том, чтобы просто показать изображение в JScrollPane без показа других компонентов (таких как JTable) в JScrollPane, то вы должны:
- Сделать ImageIcon из вашего изображения с помощью
new ImageIcon(myImage)
- Добавьте эту иконку в JLabel
- Поместите JLabel в окно просмотра JScrollPane, что можно сделать, передав JLabel в конструктор JScrollPane.
И все сделано.
Если вам нужно сделать что-то еще, то более подробно описывайте свою проблему.
Например,
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.*;
@SuppressWarnings("serial")
public class ImageInScrollPane extends JPanel {
public static final String IMAGE_PATH = "http://image.desk7.net/"
+ "Space%20Wallpapers/1422_1280x800.jpg";
private static final int PREF_W = 500;
private static final int PREF_H = 400;
public ImageInScrollPane() throws IOException {
URL imageUrl = new URL(IMAGE_PATH);
BufferedImage img = ImageIO.read(imageUrl);
Icon icon = new ImageIcon(img);
JLabel label = new JLabel(icon);
JScrollPane scrollPane = new JScrollPane(label);
setLayout(new BorderLayout());
add(scrollPane);
}
@Override
public Dimension getPreferredSize() {
if (isPreferredSizeSet()) {
return super.getPreferredSize();
}
return new Dimension(PREF_W, PREF_H);
}
private static void createAndShowGui() {
ImageInScrollPane mainPanel = null;
try {
mainPanel = new ImageInScrollPane();
} catch (IOException e) {
e.printStackTrace();
System.exit(-1);
}
JFrame frame = new JFrame("ImageInScrollPane");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(mainPanel);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
Вы спросите в комментариях:
что, если я должен добавить другие объекты, такие как кнопки .... Как это сделать?
В этой ситуации я бы создать класс, который расширяет JPanel и отобразить изображение в этом JPanel, рисуя его в методе paintComponent переопределения (если вы ищете на это, вы найдете много примеров, некоторые из них), затем добавьте кнопки/компоненты к этому графическому чертежу JPanel, а затем добавив этот JPanel в окно просмотра JScrollPane, как и в случае с JLabel выше.
Что делать, если мне нужно добавить другие объекты, такие как кнопки? ... Как это сделать? – user3188978
@ user3188978: посмотрите, пожалуйста, отредактируйте для ответа. –