swing更改组件(删除后添加)得到心得:起码得刷新一下啊,可能还得再考虑重绘
心得:修改无效时,考虑一下刷新宝贝,或再试试像界面层次的东西,再考虑重新绘制一下啊大宝贝
代码举例:
更换头像代码举例:(不刷新,不重新绘制,效果出不来,要么图片不变,要么反正就是不合心意):
ps:自己定义的几个变量的意思:pnlHeaderImage 是头像面板
headerPath 是 头像路径,方法openLocalFilePath(); 是打开文件夹或者文件,挑选自己喜欢的头像的图片文件路径
ps:刷新代码语句:pnlHeaderImage.updateUI();
重绘代码语句:pnlHeaderImage.repaint();
/** * 头像添加点击事件更换头像的方法 */ private void headImageEvent() { pnlHeaderImage.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (e.getButton() == MouseEvent.BUTTON1) { // 点击鼠标左键 pnlHeaderImage.removeAll(); pnlHeaderImage.setOpaque(true); pnlHeaderImage.repaint(); // pnlHeaderImage.updateUI(); } headerPath = openLocalFilePath(); lblHeaderImage = new JLabel(new ImageIcon(headerPath)); pnlHeaderImage.add(lblHeaderImage); pnlHeaderImage.setOpaque(false); pnlHeaderImage.updateUI(); } }); }
ps:方法openLocalFilePath(); 是打开文件夹或者文件,挑选自己喜欢的头像的图片文件路径的代码:
/** * 打开文件夹的路径 * @return */ public String openLocalFilePath() { JFileChooser fileChooser = new JFileChooser("."); fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); int value = fileChooser.showDialog(fileChooser, "选择"); File getPath = null; if (value == JFileChooser.APPROVE_OPTION) { getPath = fileChooser.getSelectedFile(); } return getPath.getAbsolutePath(); }