gpt4 book ai didi

java - 使用java Swing单击下一步按钮时图像不显示在JLabel上

转载 作者:行者123 更新时间:2023-11-30 07:00:13 27 4
gpt4 key购买 nike

我正在尝试制作一个小程序,当用户单击“下一步”按钮时,它会在 JLabel 上显示图片。问题是当我单击“下一步”按钮时,它什么也不显示。但是如果我调整框架大小,它会显示目录中的所有图片。而不是一次一张图片。请原谅我的英语。这是我的代码。

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.imageio.ImageIO;
import java.io.*;
import java.awt.image.BufferedImage;

class test {
public static void main(String args[]) {
frame f = new frame();
f.gui();
f.actions();
}
}

class frame {

BufferedImage file;
File img;
ImageIcon icon;

JLabel image;
JFrame frame;
JPanel panel;
String[] path = { "juice.jpg", "gal.jpg", "truck.jpg", "Drive.jpg" };

JButton next = new JButton("NEXT");
JButton pre = new JButton("PREVOIUS");
JTextField field = new JTextField(10);

static int num = 0;

public void gui() {

frame = new JFrame("pic gallery");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
FlowLayout flow = new FlowLayout();
frame.setLayout(flow);
panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.LINE_AXIS));
panel.add(next);
panel.add(pre);
panel.add(field);

JLabel piclabel = new JLabel();

frame.getContentPane().add(panel);
}

void actions() {

next.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
img = new File(path[num]);
System.out.println(num);
try {
file = ImageIO.read(img);
icon = new ImageIcon(file);
image = new JLabel("", icon, JLabel.CENTER);

image.setVisible(true);
frame.getContentPane().add(image);

} catch (IOException g) {

}
if (num < path.length - 1) {
num++;
field.setText(num + "");

} else {
num = 0;

}
}
});
}
}

最佳答案

添加frame.revalidate()frame.repaint()frame.getContentPane().add(image); 之后

Swing 在对布局层次结构执行更新时是懒惰的,这是一件好事,想象一下添加几十个组件并为每个组件更新整个组件层次结构。

因此,您需要在进行更改后手动更新容器

added as you suggested . now it shows next image on frame along with prevous image. but i wants 1 image at a time

然后删除第一个图像,或者更好,而不是创建一个新的 JLabel每次,创建一个 JLabel并简单地改变它的 icon属性,它应该自动使容器失效

关于java - 使用java Swing单击下一步按钮时图像不显示在JLabel上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30817036/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com