0

可能重复:
如何使用 Netbeans 中的图像路径在 JPanel 上显示图像

我准备了一个带有按钮和 Jpanels 的 GUI。当在 JFrame 中单击按钮时,需要发生 3 件事。两个大图像(由源包中的路径指定)必须出现在两个单独的 JPanel 上,而一小段文本(我将编写)则出现在一个空的 JLabel 中。问题是我不知道应该如何编写按钮处理代码。我也不知道是否需要实现一些初始化组件才能使其工作。这是一些示例代码:

package db.SuperMarioGFX;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JLabel;

/**
 *
 * @author speterson86
 */
public class EnemyGFX extends javax.swing.JFrame {

    /**
     * Creates new form EnemyGFX
     */
    public EnemyGFX() {
        initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     *
     * SuppressWarnings("unchecked"), followed by over 1000 lines of Generated
     * Code are below this, but not necessary to include in this code sample!
     */
    private void btnBeachKoopaActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
        /**
         * For 'Land[JPanel]' (Panel-container for a set of buttons, not for
         * displaying images)
         *
         * Note that "pbx" is short for "picture box". Unlike VB, I couldn't
         * find any so-called picture boxes when I was building my GUI in
         * Netbeans, so I hoped JPanels would be the next best thing to use for
         * displaying relatively large (roughly 400 x 400 pixels or less each)
         * images. Now, here's the 3 things I need to display on my EnemyGFX
         * JFrame when the btnBeachKoopa button is clicked on:
         *
         * Display "GFX01.png" in pbxDefaultBinFile[JPanel] 
         * Display "Yoshi'sIsland2.zst, Level #$106" text in lblSaveState[JLabel] 
         * Display "Land1.PNG" in pbxFixedBinFile[JPanel]
         *
         * So how would I go about making that happen?...
         */
    }
4

1 回答 1

2

如果这是我的项目,我会考虑

  • 在程序启动时上传图像(如果不是太多图像,如果不是太大)并放入 ImageIcons。
  • 在 JLabels 中显示已由 GUI 显示的 ImageIcon
  • 在 JButton 的 ActionListener 代码中,通过setIcon(...)方法设置图像 JLabel 的 ImageIcon 和通过setText(...).
  • 事实上,如果图像和文本要彼此靠近并处于适当的方向,您实际上可以使用一个 JLabel 来保存图像和文本。
  • 此外,您似乎正在使用代码生成器来生成 Swing 代码,例如 NetBeans 的 Matisse 拖放 GUI 创建器。由于您是 Swing 新手,因此我强烈建议您将其搁置一旁,先学习手动编写 Swing 代码,然后等您对 Swing 非常熟悉后,再使用您想要的代码生成器。这将在早期为您节省一个悲伤的世界。

如果您需要更具体的建议,那么正如我们之前建议的那样,请向我们展示您编写此代码的实际尝试(不是生成代码的框架——我们需要查看您的代码)以及您当前遇到的问题的详细描述代码尝试正在发生。

于 2012-10-19T18:01:50.250 回答