使用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{
}