栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在运行时将组件添加到jpanel

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在运行时将组件添加到jpanel

我看到您创建了一个

JLabel
名为
_lbl

 JLabel _lbl=new JLabel();

但您永远不会将其添加到面板中。相反,您将

JLabel
没有文本的新内容添加到面板中:

 panel.add(new JLabel());

当然,这将构造一个不可见的空标签。

添加类似后,还尝试在您的实例上调用

revalidate()
repaint()
,如下所示:
JPanel``JLabel

JLabel _lbl=new JLabel("Label");//make label and assign text in 1 linepanel.add(_lbl);//add label we madepanel.revalidate();panel.repaint();

这样,您可能还需要调用

pack()
您的框架实例,以便调整大小
Jframe
以适合新组件。

另外,请不要使用

null
/
Absolute
布局,这是非常糟糕的做法(除非制作动画),并且可能会出现问题并且很难使用。

而是使用

LayoutManager

  • 布局管理器的可视指南

或者,如果您仅在

JPanel
简单调用中只有一个组件
add(label);
,则它将扩展到该
JPanel
大小。

更新:

这是一个小样本。只需

JLabel
JPanel
每次
JButton
按下时将s加:

import java.awt.BorderLayout;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.*;public class JavaApplication116 {    public static void main(String[] args) {        SwingUtilities.invokeLater(new Runnable() { @Override public void run() {     new JavaApplication116().createAndShowUI(); }        });    }    private void createAndShowUI() {        Jframe frame = new Jframe("Test");        frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);        initComponents(frame);        frame.setResizable(false);        frame.pack();        frame.setVisible(true);    }    private void initComponents(final Jframe frame) {        final JPanel panel = new JPanel(new FlowLayout());        JButton button = new JButton("Add label");        button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) {     JLabel _lbl = new JLabel("Label");//make label and assign text in 1 line     panel.add(_lbl);//add label we made     panel.revalidate();     panel.repaint();     frame.pack();//so our frame resizes to compensate for new components }        });        frame.getContentPane().add(panel, BorderLayout.CENTER);        frame.getContentPane().add(button, BorderLayout.SOUTH);    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/431048.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号