我想通过按下按钮在面板上显示图像。我创建了一些代码
JButton btnNewButton = new JButton("next");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
if(i<files1.length){
BufferedImage bi;
try {
bi = ImageIO.read(new File(""+files1[i]));
System.out.println(files1[i]);
JLabel label = new JLabel(new ImageIcon(bi));
panel_1.add(label);
panel_1.repaint();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else
System.out.println("end of picture");
i++;
}
});
但点击按钮图像后没有显示。
答案 0 :(得分:1)
我的Java不是最好的。但显然我会说:
if(button.isPressed()) {
Panel.visible;
}
我不知道确切的方法。这更像是一个建议。
答案 1 :(得分:1)
但点击按钮图像后没有显示。
看起来你错过了revalidate()。将组件添加到可见GUI时的基本代码是:
panel.add(....);
panel.revalidate(); // to invoke the layout manager
panel.repaint();
答案 2 :(得分:-1)
您只将部分代码置于非工作状态。尝试包括所有相关代码(在这种情况下包括面板和i的定义)或条带向下以显示什么不起作用。对我来说这很有效:
public class Test {
public static void main(String[] args) {
JFrame frame = new JFrame();
final JLabel label = new JLabel();
JButton button = new JButton("next");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
BufferedImage bi = null;
try {
bi = ImageIO.read(new File("pathtofile"));
} catch (IOException e) {
e.printStackTrace();
}
label.setIcon(new ImageIcon(bi));
}
});
frame.setContentPane(new JPanel());
frame.getContentPane().add(button);
frame.getContentPane().add(label);
frame.pack();
frame.setVisible(true);
}
}
但是,请考虑JLabel不是为了以图库风格显示图像。考虑JScrollPane,如here所示。