Jlabel中的java显示图像图标
我正在用Netbeans做一个程序
。。我需要在JPanel中显示文件夹的内容(有图像)
。。。在jlabel中显示每个图像
。。。。我做了这个代码,但它不起作用
。。。。。。我用JButton和JPanel创建了一个界面:
public class MyInterface extends javax.swing.JFrame
{
/** Creates new form NewJFrame1 */
public MyInterface()
{
initComponents();
}
private File files;
private JFileChooser es = new JFileChooser();
String path;
JLabel label;
public List<ImageIcon> pictures = new ArrayList<ImageIcon>();
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
{
if (es.showOpenDialog(jPanel1) == JFileChooser.APPROVE_OPTION)
{
files = es.getSelectedFile();
path = files.getAbsolutePath();
return;
}
label.setIcon(pictures.get(WIDTH));
files = null;
return;
}
private JLabel getLabel(BufferedImage[] images)
{
for (int j = 0; j < images.length; j++)
{
pictures.add(new ImageIcon(images[j]));
}
label = new JLabel(pictures.get(0));
label.setHorizontalAlignment(JLabel.CENTER);
return label;
}
private JPanel draw()
{
JPanel panl = new JPanel();
for (int j = 0; j < pictures.size(); j++)
{
panl.getBorder();
}
JPanel panel = new JPanel();
panl.addAncestorListener(null);
panl.add(panl);
return panel;
}
}
# 1 楼答案
很难说,而且很明智
1)可能没有任何理由动态创建JLabels和JPanels
2)如果你想在一瞬间只显示一个
Image
,那么创建JFrame
放在那里JLabel和JButton
用Icon表示
Image/BufferedImage
,把这个Icon
放到JLabel
3)如果你想显示多个图像(比如说多达20-50个
Images
),那么使用GridLayoutforJLabels
containsIcon
4)如果
Images
的数量不受限制,那么使用JList# 2 楼答案
还不完全清楚您要做什么,您的代码没有按照所示进行编译,而且有点混乱。不过有一些建议:
在
draw()
中,您正在向自身添加一个JPanel,这不是一个好迹象。然后返回另一个尚未修改的面板。整理一下panel
和panl
命名来解决这个问题在
getLabel()
中,实际上没有在任何地方调用它,返回从第一个图像创建的一个标签。因此,您将只能显示其中一个图像在
jButton1ActionPerformed
中,如果用户选择了一个文件,那么您将提前返回,因此将设置路径,但不清楚是否还会发生任何其他情况