I'm working with a chat app and trying to integrate profile pictures into the code. For now, I'm just trying to get a simple static "smiley.png" to display in my gui. doing this:
final ImageIcon profilePicture = new ImageIcon(getClass().getResource("smiley.png"));
final JLabel profileLabel = new JLabel(profilePicture);
currentPanel.add(profileLabel);
results in a ERROR: Exception in ChatSimpleGui.run. Check log for details. (Log is nonexistent as I run this from terminal)
Please help?
Here is full code for this particular class:
package codeu.chat.client.simplegui;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import codeu.chat.client.ClientContext;
import codeu.chat.common.User;
// NOTE: JPanel is serializable, but there is no need to serialize UserPanel
// without the @SuppressWarnings, the compiler will complain of no override for serialVersionUID
@SuppressWarnings("serial")
public final class UserPanel extends JPanel {
private final ClientContext clientContext;
public UserPanel(ClientContext clientContext) {
super(new GridBagLayout());
this.clientContext = clientContext;
initialize();
}
private void initialize() {
// This panel contains from top to bottom; a title bar, a list of users,
// information about the current (selected) user, and a button bar.
// Title bar - also includes name of currently signed-in user.
final JPanel titlePanel = new JPanel(new GridBagLayout());
final GridBagConstraints titlePanelC = new GridBagConstraints();
final JLabel titleLabel = new JLabel("Users", JLabel.LEFT);
final GridBagConstraints titleLabelC = new GridBagConstraints();
titleLabelC.gridx = 0;
titleLabelC.gridy = 0;
titleLabelC.anchor = GridBagConstraints.PAGE_START;
final GridBagConstraints titleGapC = new GridBagConstraints();
titleGapC.gridx = 1;
titleGapC.gridy = 0;
titleGapC.fill = GridBagConstraints.HORIZONTAL;
titleGapC.weightx = 0.9;
final JLabel userSignedInLabel = new JLabel("not signed in", JLabel.RIGHT);
final GridBagConstraints titleUserC = new GridBagConstraints();
titleUserC.gridx = 2;
titleUserC.gridy = 0;
titleUserC.anchor = GridBagConstraints.LINE_END;
titlePanel.add(titleLabel, titleLabelC);
titlePanel.add(Box.createHorizontalGlue(), titleGapC);
titlePanel.add(userSignedInLabel, titleUserC);
titlePanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
// User List panel.
final JPanel listShowPanel = new JPanel();
final GridBagConstraints listPanelC = new GridBagConstraints();
final DefaultListModel<String> listModel = new DefaultListModel<>();
final JList<String> userList = new JList<>(listModel);
userList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
userList.setVisibleRowCount(10);
userList.setSelectedIndex(-1);
final JScrollPane userListScrollPane = new JScrollPane(userList);
listShowPanel.add(userListScrollPane);
userListScrollPane.setPreferredSize(new Dimension(150, 150));
//PASSWORD FIELD
final JTextField passwordField = new JTextField();
listShowPanel.add(passwordField);
passwordField.setPreferredSize(new Dimension(100, 20));
//STATUS FIELD to be implemented shortly
//final JTextField statusField = new JTextField();
//listShowPanel.add(statusField);
//statusField.setPreferredSize(new Dimension(100, 20));
// Current User panel
final JPanel currentPanel = new JPanel();
final GridBagConstraints currentPanelC = new GridBagConstraints();
final JTextArea userInfoPanel = new JTextArea();
final JScrollPane userInfoScrollPane = new JScrollPane(userInfoPanel);
currentPanel.add(userInfoScrollPane);
userInfoScrollPane.setPreferredSize(new Dimension(245, 85));
final ImageIcon profilePicture = new ImageIcon(getClass().getResource("smiley.png"));
final JLabel profileLabel = new JLabel(profilePicture);
currentPanel.add(profileLabel);
// Button bar
final JPanel buttonPanel = new JPanel();
final GridBagConstraints buttonPanelC = new GridBagConstraints();
final JButton userUpdateButton = new JButton("Update");
final JButton userSignInButton = new JButton("Sign In");
final JButton userAddButton = new JButton("Add");
buttonPanel.add(userUpdateButton);
buttonPanel.add(userSignInButton);
buttonPanel.add(userAddButton);
// Placement of title, list panel, buttons, and current user panel.
titlePanelC.gridx = 0;
titlePanelC.gridy = 0;
titlePanelC.gridwidth = 10;
titlePanelC.gridheight = 1;
titlePanelC.fill = GridBagConstraints.HORIZONTAL;
titlePanelC.anchor = GridBagConstraints.FIRST_LINE_START;
listPanelC.gridx = 0;
listPanelC.gridy = 1;
listPanelC.gridwidth = 10;
listPanelC.gridheight = 8;
listPanelC.fill = GridBagConstraints.BOTH;
listPanelC.anchor = GridBagConstraints.FIRST_LINE_START;
listPanelC.weighty = 0.8;
currentPanelC.gridx = 0;
currentPanelC.gridy = 9;
currentPanelC.gridwidth = 10;
currentPanelC.gridheight = 3;
currentPanelC.fill = GridBagConstraints.HORIZONTAL;
currentPanelC.anchor = GridBagConstraints.FIRST_LINE_START;
buttonPanelC.gridx = 0;
buttonPanelC.gridy = 12;
buttonPanelC.gridwidth = 10;
buttonPanelC.gridheight = 1;
buttonPanelC.fill = GridBagConstraints.HORIZONTAL;
buttonPanelC.anchor = GridBagConstraints.FIRST_LINE_START;
this.add(titlePanel, titlePanelC);
this.add(listShowPanel, listPanelC);
this.add(buttonPanel, buttonPanelC);
this.add(currentPanel, currentPanelC);
userUpdateButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
UserPanel.this.getAllUsers(listModel);
}
});
userSignInButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (userList.getSelectedIndex() != -1) {
final String name = userList.getSelectedValue();
final String password = passwordField.getText();
if (clientContext.user.signInUser(name, password)){
userSignedInLabel.setText("Hello " + name);
} else{
userSignedInLabel.setText("User Not Found");
}
}
}
});
userAddButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
final String s = (String) JOptionPane.showInputDialog(
UserPanel.this, "Enter user name:", "Add User", JOptionPane.PLAIN_MESSAGE,
null, null, "");
//CHECK VALID UNIQUE USERNAME: either here or ClientUser.java
final String password = (String) JOptionPane.showInputDialog(
UserPanel.this, "Set password:", "Add password", JOptionPane.PLAIN_MESSAGE,
null, null, "");
final String status = (String) JOptionPane.showInputDialog(
UserPanel.this, "Set status:", "Post!", JOptionPane.PLAIN_MESSAGE,
null, null, "");
if (s != null && s.length() > 0) {
clientContext.user.addUser(s, password, status);
UserPanel.this.getAllUsers(listModel);
}
}
});
userList.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
if (userList.getSelectedIndex() != -1) {
final String data = userList.getSelectedValue();
userInfoPanel.setText(clientContext.user.showUserInfo(data));
}
}
});
getAllUsers(listModel);
}
// Swing UI: populate ListModel object - updates display objects.
private void getAllUsers(DefaultListModel<String> usersList) {
clientContext.user.updateUsers();
usersList.clear();
for (final User u : clientContext.user.getUsers()) {
usersList.addElement(u.name);
}
}
}
Try this:
Jlabel imageLogo = new JLabel();
imageLogo.setIcon(new ImageIcon("path/to/your/image"));
Hope you saved your image in your project folder
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.