-1
// Fig. 14.6: LabelFrame.java 
// Demonstrating the JLabel class. 
import java.awt.FlowLayout; // specifies how components are arranged 
import javax.swing.JFrame; // provides basic window features 
import javax.swing.JLabel; // displays text and images 
import javax.swing.SwingConstants; // common constants used with Swing
import javax.swing.Icon; // interface used to manipulate images 
import javax.swing.ImageIcon; // loads images 

public class LabelFrame extends JFrame 
{ 
private JLabel label1; // JLabel with just text 

private JLabel label2; // JLabel constructed with text and icon 

private JLabel label3; // JLabel with added text and icon 

// LabelFrame constructor adds JLabels to JFrame 
public LabelFrame(){ 

{super( "Testing JLabel" ); 

setLayout( new FlowLayout() ); 

// JLabel constructor with a string argument 

label1 = new JLabel( "Label with text" ); 

label1.setToolTipText( "This is label1" ); 

add( label1 ); 

//JLabel constructor with string, Icon and alignment arguments 

Icon bug = new ImageIcon( getClass().getResource( "bug1.png" ) ); 

label2 = new JLabel( "Label with text and icon", bug, 

SwingConstants.LEFT ); 

label2.setToolTipText( "This is label2" ); 

add( label2 ); 

label3 = new JLabel(); // JLabel constructor no arguments 

label3.setText( "Label with icon and text at bottom" ); 

label3.setIcon( bug ); // add icon to JLabel 

label3.setHorizontalTextPosition( SwingConstants.CENTER ); 

label3.setVerticalTextPosition( SwingConstants.BOTTOM ); 

label3.setToolTipText( "This is label3" ); 

add( label3 ); 
} 
} 

那是一年级。

import javax.swing.JFrame; 

public class LabelTest 
{ 
public static void main( String[] args ) 
{ 
LabelFrame labelFrame = new LabelFrame(); // create LabelFrame 
labelFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); 
labelFrame.setSize( 260, 180 ); // set frame size 
labelFrame.setVisible( true ); // display frame 
} // end main 
} 

这是二班。

我注意到一个无类型(LabelFrame)类没有类型,但我从 Deitel 的 Java 书中复制。我认为我们是正确的,但到目前为止,由于那一小段代码,它还没有运行。我想知道这是否可能是 Java 版本的问题,因为我的是最新的,而且这本书是 2012 年的。如果你能告诉我为什么这段代码不能在 Eclipse 中运行,那将不胜感激。此外,添加不起作用。谢谢。

4

4 回答 4

2

好的..似乎问题是代码甚至不能干净地编译。这主要是由于缺乏逻辑缩进导致括号放置不正确。

此代码编译,但由于缺少图像而在运行时(此处)失败。

import java.awt.FlowLayout; // specifies how components are arranged
import javax.swing.JFrame; // provides basic window features
import javax.swing.JLabel; // displays text and images
import javax.swing.SwingConstants; // common constants used with Swing
import javax.swing.Icon; // interface used to manipulate images
import javax.swing.ImageIcon; // loads images

public class LabelFrame extends JFrame
{
    private JLabel label1; // JLabel with just text
    private JLabel label2; // JLabel constructed with text and icon
    private JLabel label3; // JLabel with added text and icon

    // LabelFrame constructor adds JLabels to JFrame
    public LabelFrame() {
        super( "Testing JLabel" );
        setLayout( new FlowLayout() );
        // JLabel constructor with a string argument
        label1 = new JLabel( "Label with text" );
        label1.setToolTipText( "This is label1" );
        add( label1 );

        //JLabel constructor with string, Icon and alignment arguments
        Icon bug = new ImageIcon( getClass().getResource( "bug1.png" ) );

        label2 = new JLabel( "Label with text and icon", bug,
        SwingConstants.LEFT );
        label2.setToolTipText( "This is label2" );
        add( label2 );
        label3 = new JLabel(); // JLabel constructor no arguments
        label3.setText( "Label with icon and text at bottom" );
        label3.setIcon( bug ); // add icon to JLabel
        label3.setHorizontalTextPosition( SwingConstants.CENTER );
        label3.setVerticalTextPosition( SwingConstants.BOTTOM );
        label3.setToolTipText( "This is label3" );
        add( label3 );
    }

    public static void main( String[] args )
    {
        LabelFrame labelFrame = new LabelFrame(); // create LabelFrame
        labelFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        labelFrame.setSize( 260, 180 ); // set frame size
        labelFrame.setVisible( true ); // display frame
    } // end main
}
于 2013-09-08T16:48:07.527 回答
0

add 显示错误的原因是因为您没有“在 LabelFrame 类中扩展 JFrame,它应该这样编码:

public class LabelFrame extends JFrame{
}

那应该可以解决该问题,在您的其余问题上,我遇到了同样的问题,因为图像不存在,它是空的,如果有人可以告诉我如何获取图像并使用它,将不胜感激,谢谢!..

于 2014-02-17T00:09:53.997 回答
0

将图片复制并粘贴到您的项目包中并运行代码。我希望它可以工作。另一个过程:使用 ImageIcon bug = new ImageIcon("java.png");//在双引号中写入图像的完整路径。而不是Icon bug = new ImageIcon( getClass().getResource( "bug1.png" ) ); 我希望它也能工作。

于 2015-05-31T20:16:41.943 回答
0

我遇到了同样的问题。这是解决方案......只需制作一个png图像(使用photoshop)并将其命名为bug1.png。现在只需将图像复制并粘贴到项目的 src 文件夹中。就这样。

于 2016-01-12T06:43:11.363 回答