gpt4 book ai didi

java - 添加图像(我做错了什么?)

转载 作者:行者123 更新时间:2023-12-01 14:37:39 24 4
gpt4 key购买 nike

所以我已经为此工作了 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。我需要做点什么,所以别介意。我这样设置我的项目文件,如果有帮助的话 -

enter image description here

在我的图像正常工作后,我需要弄清楚如何获取自定义字体(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 的所有内容都不是。 fourRowsallContent 都是不透明的...

enter image description here enter image description here

上面的两张图片是不带滚动 Pane 和带滚动 Pane 的。如您所见,第二个图像出现在滚动 Pane 下方(或穿过滚动 Pane )。

您遇到的问题是 fourRowsallContent 都是不透明的(不透明),这意味着当您将它们添加到滚动 Pane 时,尽管滚动 Pane 和 View 端口是透明的,fourRowsallContent 将阻止它。

您需要将 fourRowsallContent 设置为透明 (setOpaque(false))

关于java - 添加图像(我做错了什么?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16330188/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com