Die Bilder findest du jeweils unter „/favicon.ico„, ImageIcon hat einen Constructor, der eine URL entgegen nimmt
try {
icon2 = new ImageIcon(new URL("https:\\www.facebook.de/favicon.ico"));
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Uncaught error fetching image:
java.lang.IllegalArgumentException: protocol = https host = null
at sun.net.spi.DefaultProxySelector.select(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
at sun.awt.image.URLImageSource.getDecoder(Unknown Source)
at sun.awt.image.InputStreamImageSource.doFetch(Unknown Source)
at sun.awt.image.ImageFetcher.fetchloop(Unknown Source)
at sun.awt.image.ImageFetcher.run(Unknown Source)
Ok das scheint zu klappen.
package com.ludevstudio.passwordmanager;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.ComponentOrientation;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.ScrollPane;
import javax.swing.BoxLayout;
import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.ScrollPaneConstants;
public class ManagerPanel extends JPanel{
// This Class contains the Manager
static JPanel panel;
// Constructor and params
public ManagerPanel() {
setLayout(new GridLayout(1, 1));
add(gettScrollPane());
}
public static void addEntry(String provider, String account, String password) {
ItemPanel item = new ItemPanel(provider, account, password);
panel.add(item);
panel.revalidate();
panel.repaint();
item.revalidate();
item.repaint();
}
public JScrollPane gettScrollPane() {
panel = new JPanel();
WrapLayout layout = new WrapLayout(WrapLayout.LEFT, 10, 10);
layout.preferredLayoutSize(this);
panel.setLayout(layout);
JScrollPane pane = new JScrollPane(panel,
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
return pane;
}
}
package com.ludevstudio.passwordmanager;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder;
public class ActionsPanel extends JPanel implements ActionListener {
// THis Class contains the Action Buttons on the right side.
JLabel labAddNew, labProvider, labAccount, labPasswor, labConfirm;
JTextField tfProvieder, tfAccount, tfPassword, tfConfirm;
static JButton btnAdd, btnEdit, btnDelete;
// Constructor and params
public ActionsPanel() {
setLayout(new GridLayout(10, 1, 15, 15));
setPreferredSize(new Dimension(300, 200));
setMaximumSize(getPreferredSize());
setBorder(new EmptyBorder(15, 15, 15, 15));
setBackground(Color.white);
initComponents();
}
public void initComponents() {
Font fontHead = new Font("Arial", Font.BOLD, 28);
Font fontElements = new Font("Arial", Font.CENTER_BASELINE, 22);
btnAdd = new JButton("Add Element");
btnAdd.setFont(fontElements);
btnAdd.setPreferredSize(new Dimension(200, 40));
btnAdd.setMaximumSize(new Dimension(Integer.MAX_VALUE, 40));
btnAdd.addActionListener(this);
add(btnAdd);
btnEdit = new JButton("Edit Element");
btnEdit.setFont(fontElements);
btnEdit.setPreferredSize(new Dimension(200, 40));
btnEdit.setEnabled(false);
add(btnEdit);
btnDelete = new JButton("Delete Element");
btnDelete.setFont(fontElements);
btnDelete.setPreferredSize(new Dimension(200, 40));
btnDelete.setEnabled(false);
add(btnDelete);
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==btnAdd) {
new AddEntryDialog();
}
}
}
package com.ludevstudio.passwordmanager;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import org.omg.CORBA.portable.ApplicationException;
public class AddEntryDialog extends JDialog implements ActionListener, WindowListener{
JLabel labProvider;
JLabel labAccount;
JLabel labPassword;
JLabel labConfirm;
JTextField tfProvider, tfAccount, tfPassword, tfConfirm;
JButton btnOk, btnCancel;
public AddEntryDialog() {
setResizable(false);
setTitle("Add new Entry");
setLayout(new BorderLayout());
setAlwaysOnTop(true);
MainFrame.frame.setAlwaysOnTop(true);
initComponents();
pack();
setLocationRelativeTo(null);
setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
setVisible(true);
MainFrame.frame.setEnabled(false);
}
public void initComponents() {
JPanel textContainer = new JPanel(new GridBagLayout());
this.add(textContainer, BorderLayout.CENTER);
Font font = new Font("Arial", Font.LAYOUT_LEFT_TO_RIGHT, 20);
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
gbc.insets = new Insets(5, 5, 5, 5);
labProvider = new JLabel("Provider: ");
labProvider.setFont(font);
textContainer.add(labProvider, gbc);
gbc.gridx = 0;
gbc.gridy = 1;
labAccount = new JLabel("Account: ");
labAccount.setFont(font);
textContainer.add(labAccount, gbc);
gbc.gridx = 0;
gbc.gridy = 2;
labPassword = new JLabel("Password: ");
labPassword.setFont(font);
textContainer.add(labPassword, gbc);
gbc.gridx = 1;
gbc.gridy = 0;
tfProvider = new JTextField();
tfProvider.setPreferredSize(new Dimension(150, 30));
textContainer.add(tfProvider, gbc);
gbc.gridx = 1;
gbc.gridy = 1;
tfAccount = new JTextField();
tfAccount.setPreferredSize(new Dimension(150, 30));
textContainer.add(tfAccount, gbc);
gbc.gridx = 1;
gbc.gridy = 2;
tfPassword = new JTextField();
tfPassword.setPreferredSize(new Dimension(150, 30));
textContainer.add(tfPassword, gbc);
gbc.gridx = 0;
gbc.gridy = 3;
labConfirm = new JLabel("Confirm");
labConfirm.setFont(font);
textContainer.add(labConfirm, gbc);
gbc.gridx = 1;
gbc.gridy = 3;
tfConfirm = new JTextField();
tfConfirm.setPreferredSize(new Dimension(150, 30));
tfConfirm.setFont(font);
textContainer.add(tfConfirm, gbc);
gbc.gridx = 2;
gbc.gridy = 0;
gbc.fill = GridBagConstraints.HORIZONTAL;
btnOk = new JButton("Add");
btnOk.addActionListener(this);
textContainer.add(btnOk, gbc);
gbc.gridx = 2;
gbc.gridy = 1;
btnCancel = new JButton("Cancel");
btnCancel.addActionListener(this);
textContainer.add(btnCancel, gbc);
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==btnCancel) {
this.hide();
MainFrame.frame.setEnabled(true);
MainFrame.frame.setAlwaysOnTop(false);
} else if (e.getSource()==btnOk) {
if(!tfProvider.getText().isEmpty() && !tfPassword.getText().isEmpty() && !tfAccount.getText().isEmpty()) {
if(tfPassword.getText().equals(tfConfirm.getText())) {
ManagerPanel.addEntry(tfProvider.getText(), tfAccount.getText(), tfPassword.getText());
this.hide();
MainFrame.frame.setEnabled(true);
MainFrame.frame.setAlwaysOnTop(false);
}
}
}
}
@Override
public void windowActivated(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowClosed(WindowEvent e) {
}
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowDeactivated(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowDeiconified(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowIconified(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowOpened(WindowEvent e) {
// TODO Auto-generated method stub
}
}
package com.ludevstudio.passwordmanager;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.awt.image.ImageObserver;
import java.awt.image.ImageProducer;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.BoxLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder;
public class ItemPanel extends JPanel {
JLabel iconContainer, labProvider, labAccount, labPassword;
JPanel textContainer;
Image icon;
String provider, password, account;
public ItemPanel(String provider, String account, String password) {
this.provider = provider;
this.account = account;
this.password = password;
setBorder(new LineBorder(Color.black));
setPreferredSize(new Dimension(500, 100)); // HIER SOLL DIE GRÖSSE AUTOM. ANGEPASST WERDEN
setMinimumSize(this.getPreferredSize());
setMaximumSize(this.getPreferredSize());
setLayout(new BorderLayout());
setBackground(Color.white);
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
initComponents();
try {
icon = ImageIO.read(new URL("https://www.facebook.com/favicon.ico"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
t1.start();
}
public void initComponents() {
Font fontProvider = new Font("Arial", Font.BOLD, 36);
Font fontAccount = new Font("Arial", Font.ITALIC, 28);
iconContainer = new JLabel(new ImageIcon(getScaledImage(icon, 80, 80)));
iconContainer.setPreferredSize(new Dimension(100, 100));
iconContainer.setMaximumSize(iconContainer.getPreferredSize());
iconContainer.setBackground(Color.white);
this.add(iconContainer, BorderLayout.WEST);
textContainer = new JPanel();
textContainer.setLayout(new BoxLayout(this.textContainer, BoxLayout.PAGE_AXIS));
textContainer.setBackground(Color.white);
labProvider = new JLabel(provider);
labProvider.setFont(fontProvider);
textContainer.add(labProvider);
labAccount = new JLabel(account);
labAccount.setFont(fontAccount);
textContainer.add(labAccount);
this.add(textContainer, BorderLayout.CENTER);
this.revalidate();
this.repaint();
}
private Image getScaledImage(Image srcImg, int w, int h){
BufferedImage resizedImg = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = resizedImg.createGraphics();
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2.drawImage(srcImg, 0, 0, w, h, null);
g2.dispose();
return resizedImg;
}
}
Ich weiß. Ich wollte da nur was testennichts in einem separaten Thread verloren.
Habs jetzt andersrum. Wird trotzdem nicht angezeigt.Du rufst initComponents auf und danach lädst Du icon, mit dem nichts mehr passiert.
package com.ludevstudio.passwordmanager;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.awt.image.ImageObserver;
import java.awt.image.ImageProducer;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.BoxLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder;
public class ItemPanel extends JPanel {
JLabel iconContainer, labProvider, labAccount, labPassword;
JPanel textContainer;
Image icon;
String provider, password, account;
public ItemPanel(String provider, String account, String password) {
this.provider = provider;
this.account = account;
this.password = password;
setBorder(new LineBorder(Color.black));
setPreferredSize(new Dimension(500, 100)); // HIER SOLL DIE GRÖSSE AUTOM. ANGEPASST WERDEN
setMinimumSize(this.getPreferredSize());
setMaximumSize(this.getPreferredSize());
setLayout(new BorderLayout());
setBackground(Color.white);
// TODO Auto-generated method stub
try {
icon = ImageIO.read(new URL("https://www.youtube.com/favicon.ico"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
initComponents();
}
}
public void initComponents() {
Font fontProvider = new Font("Arial", Font.BOLD, 36);
Font fontAccount = new Font("Arial", Font.ITALIC, 28);
iconContainer = new JLabel(new ImageIcon(getScaledImage(icon, 80, 80)));
iconContainer.setPreferredSize(new Dimension(100, 100));
iconContainer.setMaximumSize(iconContainer.getPreferredSize());
iconContainer.setBackground(Color.white);
this.add(iconContainer, BorderLayout.WEST);
textContainer = new JPanel();
textContainer.setLayout(new BoxLayout(this.textContainer, BoxLayout.PAGE_AXIS));
textContainer.setBackground(Color.white);
labProvider = new JLabel(provider);
labProvider.setFont(fontProvider);
textContainer.add(labProvider);
labAccount = new JLabel(account);
labAccount.setFont(fontAccount);
textContainer.add(labAccount);
this.add(textContainer, BorderLayout.CENTER);
this.revalidate();
this.repaint();
}
private Image getScaledImage(Image srcImg, int w, int h){
BufferedImage resizedImg = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = resizedImg.createGraphics();
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2.drawImage(srcImg, 0, 0, w, h, null);
g2.dispose();
return resizedImg;
}
}