很抱歉这么愚蠢的问题,但我在修复图像上用Java设置背景图片时遇到了一些麻烦。这就是我的意思 -
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class MainFrame{
public static void createGUI(){
JFrame frame = new JFrame("Warlords Organizer");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel emptyLabel = new JLabel("");
emptyLabel.setPreferredSize(new Dimension(1280,720));
frame.getContentPane().add(emptyLabel, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
frame.setResizable(false);
JLabel contentPane = new JLabel();
contentPane.setIcon(/imageFolder/warlordsOrganizerBackground.png);
contentPane.setLayout(new BorderLayout());
frame.setContentPane(contentPane);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createGUI();
}
});
} // public static void main(String[] args) Closing
} // public class MainFrame Closing
所以我可以得到框架,以及类似的东西,但我似乎无法加载图像。我将图像放在名为imageFolder的源文件夹中 - http://i.imgur.com/LWqQ6JU.png
最后,如何将背景图像设置为向下滚动的位置,图像保持在同一位置,但是我计划添加的文本和其他图像会移动?
答案 0 :(得分:3)
contentPane.setIcon(/imageFolder/warlordsOrganizerBackground.png); // ????
setIcon(...)
方法。我不确定你在那里传递的是什么,但它看起来像一个没有引号的字符串。例如:
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.*;
public class MainFrame {
private static final String IMAGE_PATH = "imgFolder/ham-hamster.jpg";
public static void createGUI() {
JFrame frame = new JFrame("Fubars");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
File imageFile = new File(IMAGE_PATH);
try {
JTextArea textArea = new JTextArea(5, 40);
textArea.setWrapStyleWord(true);
textArea.setLineWrap(true);
for (int i = 0; i < 30; i++) {
textArea.append("foo bars rule the world!\n");
}
textArea.setFont(textArea.getFont().deriveFont(Font.BOLD, 20));
JScrollPane scrollPane = new JScrollPane(textArea);
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
textArea.setOpaque(false);
scrollPane.setOpaque(false);
scrollPane.getViewport().setOpaque(false);
BufferedImage backgroundImg = ImageIO.read(imageFile);
Icon backgroundIcon = new ImageIcon(backgroundImg);
JLabel contentLabel = new JLabel(backgroundIcon);
contentLabel.setLayout(new BorderLayout());
contentLabel.add(scrollPane, BorderLayout.CENTER);
frame.setContentPane(contentLabel);
frame.pack();
frame.setVisible(true);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createGUI();
}
});
}
}
显示为:
答案 1 :(得分:3)
有关如何加载图片的示例,请参阅How to Use Icons。
如果您需要使用缩放图像作为背景,则可以使用Background Panel。它将为您设置滚动窗格和视口不透明。