- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我已经为此工作了 2 天,并且我已经掌握了 java.swing 的基础知识(我希望,至少,因为我在 2 天前开始学习它。)无论如何,我成功加载了背景图像,但我似乎无法让前景图像工作。我不确定您需要什么代码,所以我将发布所有代码。当您查看它时,我是否正确设置了 JPanel? (特别是 allContent 和 fourRows 。)
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.util.*;
import junit.framework.Test;
public class MainFrame {
//Variables
private static final String IMAGE_PATH = "imageFolder/warlordsOrganizerBackground.png";
private static final String IMAGE_PATH2 = "imageFolder/warlordsLogo.png";
public static JFrame programFrame;
public static JLabel warlordsBackground;
public static JLabel warlordsLogo;
public static JPanel allContent;
public static JPanel fourRows;
public static JScrollPane scrollPane;
//Making the parts for the GUI
public static void createGUI(){
//programFrame Title and Layout
programFrame = new JFrame("Warlords Organizer");
programFrame.setLayout(new BorderLayout());
Icon backgroundIcon = new ImageIcon(IMAGE_PATH);
warlordsBackground = new JLabel(backgroundIcon);
File imageFile = new File(IMAGE_PATH);
File imageFile2 = new File(IMAGE_PATH2);
//Warlords Logo JLabel
Icon logoIcon = new ImageIcon(IMAGE_PATH2);
warlordsLogo = new JLabel(logoIcon);
//New JPanel for GridLayout
fourRows = new JPanel(new GridLayout(0,4));
fourRows.setLayout(new GridLayout());
//Makes the Initial BorderLayout (Using allContent JPanel)
allContent = new JPanel();
allContent.setLayout(new BorderLayout());
allContent.add(warlordsLogo, BorderLayout.NORTH);
allContent.setVisible(true);
allContent.add(fourRows, BorderLayout.CENTER);
//Add ScrollPane / MAKE SURE TO ADD TO new JScrollPane WHERE IT NEEDS TO BE / TEXT
scrollPane = new JScrollPane(allContent);
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
scrollPane.setOpaque(false);
scrollPane.getViewport().setOpaque(false);
//JFrame programFrame Constructors
programFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
programFrame.setContentPane(warlordsBackground);
programFrame.pack();
programFrame.setVisible(true);
programFrame.setResizable(false);
} // public static void createGUI() Closing
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createGUI();
} //public void run() Closing
});
}
}
最后是我的 JScrollPane。我需要做点什么,所以别介意。我这样设置我的项目文件,如果有帮助的话 -
在我的图像正常工作后,我需要弄清楚如何获取自定义字体(BEBAS__.ttf),因此如果您也有一些相关资源,我将不胜感激。
最佳答案
我的看法(假设图像加载正确)...
您创建背景图像...
warlordsBackground = new JLabel(backgroundIcon);
稍后,您将其设置为框架的内容 Pane ...
programFrame.setContentPane(warlordsBackground);
但是你没有向它或框架添加任何内容......
现在,您可能遇到的小问题是 JLabel
实际上没有布局管理器,因此即使您向其中添加了任何内容,也不会显示任何内容...
尝试做一些更像......的事情
programFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
programFrame.setContentPane(warlordsBackground);
programFrame.setLayout(new BorderLayout());
programFrame.add(scrollPane);
programFrame.pack();
programFrame.setVisible(true);
programFrame.setResizable(false);
附加
现在,根据您的代码,您似乎希望使滚动 Pane 透明,但添加到滚动 Pane 的所有内容都不是。 fourRows
和 allContent
都是不透明的...
上面的两张图片是不带滚动 Pane 和带滚动 Pane 的。如您所见,第二个图像出现在滚动 Pane 下方(或穿过滚动 Pane )。
您遇到的问题是 fourRows
和 allContent
都是不透明的(不透明),这意味着当您将它们添加到滚动 Pane 时,尽管滚动 Pane 和 View 端口是透明的,fourRows
和 allContent
将阻止它。
您需要将 fourRows
和 allContent
设置为透明 (setOpaque(false)
)
关于java - 添加图像(我做错了什么?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16330188/
我是一名优秀的程序员,十分优秀!