// 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中运行,那将非常感激。另外,添加不起作用。感谢。
答案 0 :(得分: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
}
答案 1 :(得分:0)
添加显示错误的原因是因为您没有“在LabelFrame类中扩展JFrame, 它应该像这样编码:
public class LabelFrame extends JFrame{
}
应该解决这个问题,在你的问题的其余部分,我有同样的问题,因为图像不存在,它是空的,如果有人可以告诉我如何获取图像并使用它,那将是非常感谢,谢谢!..
答案 2 :(得分:0)
将图片复制并粘贴到项目包中并运行代码。我希望它能正常工作。
另一个过程:
使用
ImageIcon bug = new ImageIcon("java.png");
//在双引号中写下图像的完整路径。
而不是Icon bug = new ImageIcon( getClass().getResource( "bug1.png" ) );
我希望它也能奏效。
答案 3 :(得分:0)
我遇到了同样的问题。这是解决方案......只需制作一个png图像(使用photoshop)并将其命名为bug1.png。现在只需复制&将图像粘贴到项目的src文件夹中。多数民众赞成。