我希望在GUI中显示输出,如下图所示
但是当我在JLabel
s上使用setText
时,我最终得到了这样的结果
以下是显示我的文本的代码:
class StudentPanel extends JPanel {
JLabel jlName;
JLabel jlTitle;
JLabel jlImageFile;
JLabel jlGroup;
JLabel jlDemoWhat;
private JLabel student1image_2;
public StudentPanel() {
//jlName = new JTextArea("<html><body><\n>");
jlName = new JLabel();
add(jlName);
jlTitle = new JLabel();
add(jlTitle);
jlImageFile = new JLabel();
add(jlImageFile);
jlGroup = new JLabel();
add(jlGroup);
jlDemoWhat = new JLabel();
add(jlDemoWhat);
}
public void setStudent(Student s) {
jlName.setText("Hi Prof, I am " + s.getName());
jlTitle.setText("I am a " + s.getTitle());
ImageIcon student1image = new ImageIcon(s.getImageFile());
Image student1image_1 = student1image.getImage();
Image student1Resized = student1image_1.getScaledInstance(260, 180, UNDEFINED_CONDITION);
student1image = new ImageIcon(student1Resized);
student1image_2 = new JLabel(student1image);
add(student1image_2);
jlGroup.setText(s.getGroup());
jlDemoWhat.setText(s.getDemoWhat());
}
}
有人知道怎么把它们分开吗?
非常感谢你。
我在谷歌上搜索了一下,但到目前为止还没有找到希望。
2条答案
按热度按时间rqcrx0a61#
在您的ctor
StudentPanel()
中,您可以使用setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
,然后再添加组件。z4bn682m2#
Oracle有一个很有用的教程Creating a GUI With Swing。跳过使用NetBeans IDE学习Swing部分。
您的代码无法运行,所以我创建了这个GUI。
Swing应用程序应该总是以
SwingUtilities
invokeLater
方法的调用开始。此方法确保在Event Dispatch Thread上创建和执行Swing组件。您使用Swing组件。扩展Swing组件或任何Java类的唯一原因是当您希望覆盖一个或多个类方法时。
我硬编码了student值。您需要添加对Student类的引用。
下面是完整的可运行代码。