gui 中重画的问题

发布于 2024-11-14 05:32:02 字数 842 浏览 2 评论 0原文

第一次选择图像时,效果很好。但当我尝试更改它时,它不起作用,第一个图像保留在屏幕上。

label = new JLabel("");
panel_1.add(label); 

btnAddImage = new JButton("Select Image");
btnAddImage.addMouseListener(new MouseAdapter() {
@Override
  public void mouseClicked(MouseEvent arg0) {
  File f = null ;
  fileChooser = new JFileChooser();
  fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
  int value = fileChooser.showOpenDialog(fileChooser);
  if (value == JFileChooser.APPROVE_OPTION)
  {
    f = fileChooser.getSelectedFile();
    if (f.exists())
    {
      inputImage_textField.setText(f.getName());        
      BufferedImage bi = getMyBuffImage();
      label = new JLabel(new ImageIcon(bi));
      label.setBounds(0, 68, 98, 92);
      panel_1.add(label);
      panel_1.repaint();
    }
   }
 }
});

是我重画时做错了什么还是其他问题?

谢谢

The first time a choose a image, it works just fine. But it does not work when I try to change it, the first image remains on the screen.

label = new JLabel("");
panel_1.add(label); 

btnAddImage = new JButton("Select Image");
btnAddImage.addMouseListener(new MouseAdapter() {
@Override
  public void mouseClicked(MouseEvent arg0) {
  File f = null ;
  fileChooser = new JFileChooser();
  fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
  int value = fileChooser.showOpenDialog(fileChooser);
  if (value == JFileChooser.APPROVE_OPTION)
  {
    f = fileChooser.getSelectedFile();
    if (f.exists())
    {
      inputImage_textField.setText(f.getName());        
      BufferedImage bi = getMyBuffImage();
      label = new JLabel(new ImageIcon(bi));
      label.setBounds(0, 68, 98, 92);
      panel_1.add(label);
      panel_1.repaint();
    }
   }
 }
});

Am I doing something wrong when I repaint or something else is the problem?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

待天淡蓝洁白时 2024-11-21 05:32:03

如果你想替换现有的标签,替换

label = new JLabel(new ImageIcon(bi));
label.setBounds(0, 68, 98, 92);
panel_1.add(label);
panel_1.repaint();

label.setIcon(new ImageIcon(bi));
label.setBounds(0, 68, 98, 92);
panel_1.revalidate();

或者如果你想添加第二个标签,只需替换

label = new JLabel(new ImageIcon(bi));
label.setBounds(0, 68, 98, 92);
panel_1.add(label);
panel_1.repaint();

JLabel newLabel = new JLabel(new ImageIcon(bi));
label.setBounds(0, 68, 98, 92);
panel_1.add(newLabel);
panel_1.revalidate();

If you want to replace the existing label, replace

label = new JLabel(new ImageIcon(bi));
label.setBounds(0, 68, 98, 92);
panel_1.add(label);
panel_1.repaint();

with

label.setIcon(new ImageIcon(bi));
label.setBounds(0, 68, 98, 92);
panel_1.revalidate();

Or if you want to add a second label, just replace

label = new JLabel(new ImageIcon(bi));
label.setBounds(0, 68, 98, 92);
panel_1.add(label);
panel_1.repaint();

with

JLabel newLabel = new JLabel(new ImageIcon(bi));
label.setBounds(0, 68, 98, 92);
panel_1.add(newLabel);
panel_1.revalidate();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文