如何在JTabbedPane上添加图片 - 在空面板布局上?

时间:2013-04-05 16:26:21

标签: java swing jframe image jtabbedpane

我想在src文件夹的JTabbed Pane布局上实现一张200 * 200的图片。

我的问题是没有显示 - 没有错误没有异常,也没有图片。

我不认为我必须声明目录并设置为私有,因为它已经包含在src文件夹中。

import java.awt.*;
import javax.swing.*;

import java.awt.event.KeyEvent;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JFrame;



public class Example1 
        extends JFrame 


{
    private     JTabbedPane tabbedPane;
    private     JPanel      panel1;

    public Example1()
    {
        // NOTE: to reduce the amount of code in this example, it uses
        // panels with a NULL layout.  This is NOT suitable for
        // production code since it may not display correctly for
        // a look-and-feel.

        setTitle( "Program" );
        setSize( 800, 400 );
        setBackground( Color.gray );

        JPanel topPanel = new JPanel();
        topPanel.setLayout( new BorderLayout() );
        getContentPane().add( topPanel );

        // Create the tab pages
        createPage1();


        // Create a tabbed pane
        tabbedPane = new JTabbedPane();
        tabbedPane.addTab( "Tab Page", panel1 );
        topPanel.add( tabbedPane, BorderLayout.CENTER );
    }

    public void createPage1()
    {
        panel1 = new JPanel();
        panel1.setLayout( null );

        ImageIcon pic = new ImageIcon("test.png");
        JLabel label = new JLabel (pic);
        panel1.add(label);
        label.setVisible (true);
        label.setBounds( 200, 200, 200, 400 );
}

// Main method to get things started
    public static void main( String args[] )
    {
        // Create an instance of the test application
        Example1 mainFrame  = new Example1();
        mainFrame.setVisible( true );


    }
}

如果您希望我提供更多信息,请提出要求。

2 个答案:

答案 0 :(得分:1)

请勿在面板上使用null布局(并获取setBounds())。

面板没有首选尺寸,所以Swing认为没有什么可以画的。

答案 1 :(得分:0)

如果找不到图像,

ImageIcon不会显示任何错误 - 确保图像位于应用程序的应用程序目录中

使用docs

中的null布局
  

虽然可以不使用布局管理器,但您应该使用布局管理器,如果可能的话