【问题标题】:When i want to add the label on the Panel, it will not appear until resizing the frame [duplicate]当我想在面板上添加标签时,在调整框架大小之前它不会出现[重复]
【发布时间】:2015-03-12 14:21:04
【问题描述】:

当我想向面板添加标签时,它不会出现,直到调整框架大小。它不更新。

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class Actions_GUI
{
    JFrame frame;
    JPanel panel;
    JButton button;
    JLabel label;

    Actions_GUI()
    {
        frame = new JFrame();
        frame.setSize(400,300);
        frame.setTitle("WHY ?");

        panel = new JPanel();
        panel.setBackground(Color.black);

        button = new JButton(" WHY ?");

这是在主面板上创建标签的事件。

        button.addActionListener(new ActionListener()
        {
             public void actionPerformed(ActionEvent e)
             {
                 label=new JLabel(" Why Don't Upadate? ");
                 label.setForeground(Color.magenta);
                 panel.add(label);
             }
        });
        panel.add(button);


        frame.add(panel);
        frame.setVisible(true);
    }  

    public static void main(String [] args)
    {
        Actions_GUI object = new Actions_GUI();
    }
}

【问题讨论】:

  • 尝试添加panel.invalidate()强制面板更新。
  • 这篇文章很有用:stackoverflow.com/questions/3718435/…。使用框架布局(如边框布局)以及管理组件位置的面板。
  • @MarkoŽivanović,谢谢,我试过“panel.revalidate()”,这是解决问题的方法,谢谢

标签: java swing jframe jpanel jbutton


【解决方案1】:

你需要调用 repaint()

        public void actionPerformed(ActionEvent e)
         {
             label=new JLabel(" Why Don't Upadate? ");
             label.setForeground(Color.magenta);
             panel.add(label); // adding a label will automatically invalidate the component
             panel.revalidate();
             panel.repaint(); // you need to repaint
         }

【讨论】:

  • 在 repaint() 之前需要 revalidate()。 revalidate() 基本上会调用布局管理器,否则组件的大小仍然为 (0, 0),并且没有任何东西可以 repaint()。
  • @camickr 好点。我在想做 panel.add(label) 会使组件无效 - 它会 - 但我忘记了你需要在那之后调用 (re)validate :)
猜你喜欢
  • 2016-04-11
  • 2012-02-13
  • 1970-01-01
  • 2012-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-26
相关资源
最近更新 更多