使用Deitel';这本Java书不起作用

使用Deitel';这本Java书不起作用,java,swing,Java,Swing,那是一班 // 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 an

那是一班

// 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 ); 
} 
} 
这是二班


我注意到,使用一个非类型化(LabelFrame)类并没有类型,但我是从Deitel的Java书籍中复制的。我认为我们是正确的,但到目前为止,这并没有运行,因为这段代码很小。我想知道这是否是Java版本的问题,因为我的是最新版本,这本书是2012年出版的。如果您能告诉我为什么这段代码不会在Eclipse中运行,我将不胜感激。此外,add不起作用。谢谢。

好的。。问题似乎在于,代码甚至无法干净地编译。这主要是由于缺少逻辑缩进导致括号放置错误

此代码可以编译,但由于缺少映像,在运行时失败(此处)

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 
} 

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

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
}

这应该可以解决这个问题,在你的问题的其余部分,我也有同样的问题,因为图像不在那里,它是空的,如果有人能告诉我如何获取图像并使用它,那将不胜感激,谢谢!。

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

我希望它也能起作用。

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

您能告诉我您遇到了什么错误吗?您所说的“不会运行”到底是什么意思吗?另外,对代码块使用一致的逻辑缩进。代码缩进旨在帮助人们理解程序流程!对于2012年出版的一本书,我最近违反了swing。无论如何,告诉我们错误/stacktrace等会很有用。你所有的代码都缺少缩进吗?这不使它很难阅读吗?很抱歉,我是个笨蛋。我刚刚注意到了括号。在super(“”)上取下括号后,它仍然不会运行;但它仍然不会编译:线程“main”中的异常java.lang.NullPointerException位于javax.swing.ImageIcon。(未知源)位于LabelFrame。(LabelFrame.java:35)位于LabelTest.main(LabelTest.java:7)Ok。所以该bug不是一个内部“bug”“形象,但外在?好的。这就解释了。如果它有助于解决问题,请给出答案。它没有完全解决问题。它仍然有我在你回答上面的评论部分发布的错误消息。非常感谢。
public class LabelFrame extends JFrame{
}