当用户输入密码并单击“确定”按钮时,密码将被加密并存储在JTextArea
中。这工作正常。但我想在showConfirmDialog
和showMessageDialog
弹出窗口中添加自定义徽标。我尝试使用以下代码,但自定义图像(徽标)未显示在消息弹出窗口
public static void main(String[] args) {
Box box = Box.createHorizontalBox();
JLabel label = new JLabel("Enter your password : ");
box.add(label);
JPasswordField passwordField = new JPasswordField(24);
box.add(passwordField);
final ImageIcon icon = new ImageIcon("C:\\Users\\Test\\Internet.png");
int button = JOptionPane.showConfirmDialog(null, box, "Enter your password", JOptionPane.OK_CANCEL_OPTION, JOptionPane.NO_OPTION, icon);
if (button == JOptionPane.OK_OPTION) {
String password = new String(passwordField.getPassword());
String encryptedPassword;
if (password != null && !password.equals("")) {
byte[] bytesEncoded = Base64.encodeBase64(password.getBytes());
JTextArea richTextField = new JTextArea(10, 10);
encryptedPassword = new String(bytesEncoded);
richTextField.setText(encryptedPassword);
richTextField.setOpaque(false);
richTextField.setEditable(false);
JOptionPane.showMessageDialog(null, richTextField);
} else {
JOptionPane.showMessageDialog(null,
"Password cannot be null. Please enter password to encrypt.");
}
}
}<br>
我将ImageIcon
对象作为参数传递给JoptionPane.showConfirmDialog
。但是当我运行它时,我看不到弹出窗口中显示的任何图像。我不确定我在这里做错了什么
注意:我需要在弹出窗口中显示自定义图像。 showConfirmDialog
和showMessageDialog
非常感谢任何帮助
答案 0 :(得分:1)
你的代码非常好。我只是在我的环境中运行它并且工作正常。这让我相信你的问题是图像的路径。我甚至用一条不存在图像的路径测试它,窗口显示没有显示任何图像。
我只改变了两件事,显然是图像的路径:
final ImageIcon icon = new ImageIcon("c:\\temp\\poke-ball-png-13_30x30.png");
这张图片来自Free Icons PNG
而且Base64
类因为没有提到你在哪里使用它我使用的是java:
import java.util.Base64;
....
byte[] bytesEncoded = Base64.getEncoder().encode(password.getBytes());
所以请确保您的图片"C:\\Users\\Test\\Internet.png"
确实存在于该路径的磁盘上