首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JButton上的setVisible()在构造函数外部不起作用

JButton上的setVisible()方法用于设置按钮的可见性。当调用setVisible(true)时,按钮将可见,用户可以看到并与其进行交互。相反,调用setVisible(false)将使按钮不可见,用户将无法看到或与其进行交互。

在构造函数外部调用setVisible()方法可能不起作用的原因是,构造函数是在创建对象时自动调用的方法,用于初始化对象的属性和状态。在构造函数执行期间,组件尚未完全初始化,因此对setVisible()的调用可能会被忽略或产生意外的结果。

为了确保setVisible()方法的有效调用,可以将其放置在构造函数的最后一行或使用SwingUtilities.invokeLater()方法将其放置在事件分派线程中执行。这样可以确保在组件完全初始化后再设置可见性。

以下是一个示例代码,演示如何正确使用setVisible()方法:

代码语言:txt
复制
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class ButtonExample extends JFrame {
    private JButton button;

    public ButtonExample() {
        initialize();
        setupUI();
        setVisible(true);
    }

    private void initialize() {
        // 初始化窗口设置
        setTitle("Button Example");
        setSize(300, 200);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    private void setupUI() {
        button = new JButton("Click me");
        add(button);
    }

    public void showButton() {
        SwingUtilities.invokeLater(() -> {
            button.setVisible(true);
        });
    }

    public static void main(String[] args) {
        ButtonExample example = new ButtonExample();
        example.showButton();
    }
}

在上述示例中,我们在构造函数中调用setVisible(true)来设置窗口的可见性。然后,我们在showButton()方法中使用SwingUtilities.invokeLater()方法将setVisible(true)放置在事件分派线程中执行,以确保在组件完全初始化后再设置按钮的可见性。

请注意,上述示例中没有提及任何特定的云计算品牌商或产品。如果您需要与云计算相关的更多信息,可以参考腾讯云的官方文档和产品介绍页面,以了解他们提供的云计算解决方案和服务。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

JAVA学习Swing章节流布局管理器简单学习

* 默认情况下,组件每一行都是居中排列,但是通过设置也可以更改组件每一行排列位置 * * 2:FlowLayout类中具有三种构造方法 * alignment参数使用流布局管理器后组件每一行具体摆放位置...10个按钮 container.add(new JButton("button"+i)); //new一个按钮构造方法,这种使用技巧勤加练习...,并设置组件布局 *2:add()方法提供了容器中添加组件功能,并同时设置组件摆放位置 * */ //定义按钮组件上面的文字ESWN 东南西北 北下南左西右东...[i])); } //设置窗体外部属性 setSize(350,200);//设置窗体大小 setVisible(true...("button"+i)); } //设置容器外部结构 setTitle("这是一个网格布局管理器窗体"); setSize(300,300

1K30

JAVA学习Swing章节流布局管理器简单学习

* 默认情况下,组件每一行都是居中排列,但是通过设置也可以更改组件每一行排列位置 * * 2:FlowLayout类中具有三种构造方法 * alignment参数使用流布局管理器后组件每一行具体摆放位置...10个按钮 container.add(new JButton("button"+i)); //new一个按钮构造方法,这种使用技巧勤加练习...,并设置组件布局 *2:add()方法提供了容器中添加组件功能,并同时设置组件摆放位置 * */ //定义按钮组件上面的文字ESWN 东南西北 北下南左西右东...[i])); } //设置窗体外部属性 setSize(350,200);//设置窗体大小 setVisible(true...("button"+i)); } //设置容器外部结构 setTitle("这是一个网格布局管理器窗体"); setSize(300,300

1.4K00
  • JAVA学习Swing章节JPanel和JScrollPane面板简单学习

    container.add(p3); container.add(p4); //将容器外部特性实例化 setTitle("JPanel面板案例..."); setSize(400,250);//设窗体大小 宽和高 setVisible(true);//设定窗体可视化 //设置窗体关闭方式...* * 3:如果需要在JScrollPane面板中放置多个组件,需要将多个组件放置JPanel面板, * 然后将JPanel作为一个整体组件添加到JScrollPane组件。...* * 4:从本实例可以得到在窗体中创建一个带滚动条文字编辑器,首先需要初始化编辑器, * 并且初始化时完成编译器大小指定,当创建带滚动条面板时,将编译器加入面板中 * ,最后将带滚动条编译器放置容器中即可...setTitle("带滚动条文字编辑器");//设置窗口标题文字 setSize(400,400);//设置窗口大小 setVisible(true

    1.9K90

    Java图形化界面设计——布局管理器之BorderLayout

    依次对应为:北(NORTH)、下南(SOUTH)、左西(WEST)、右东(EAST),中(CENTER),如下图所示。 ?...若东、西、南、北位置中无论哪个位置没有控件,则中间位置控件将自动占据没有控件位置。 l 它是窗口、框架内容窗格和对话框等缺省布局。 1、 常见构建函数和方法 ?...JFrame { private JPanel innerWindow = new JPanel(); public BorderLayoutDemo1() { //构造函数...如果想要更复杂布局可以东、西、南、北和中间位置添加中间容器,中间容器中再进行布局,并添加相应组件,已达到复制补间效果。 实例二:中间位置中添加9个按钮。....*; public class BorderLayoutDemo2 extends JFrame { JPanel p = new JPanel(); //同名构造函数

    1.2K10

    创建一个窗口和按钮

    定义一个窗口 aa.setTitle("餐厅点餐系统");//设置主窗口名字 JButton an1=new JButton("菜式导航");//新建按钮 aa.setSize(500, 500)...aa.add(an1);//窗口里添加一个按钮 //aa.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//防止关闭后资源内存示范,默认关闭操作 aa.setVisible...JFrame{//继承方法JFrame,任何对象直接使用 JButton an1=null;//初始值,把需要组件都全部放在这里定义 public static void main(String...[] args) { Screen lx1=new Screen();//主函数只需要调用就好 } public Screen() {//把初始化全部工作放在构造函数里 this.setTitle...an1);//窗口里添加一个按钮 //this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//防止关闭后资源内存示范,默认关闭操作 this.setVisible

    75530

    Java入门(12)-- Swing程序设计

    12.3.2 图标的使用 Swing中图标可以放置在按钮、标签等组件,用于描述组件用途。...默认情况下,组件每一行都是居中排列,可以通过设置更改组件排列位置。...ipadx修改组件宽度,ipady用来修改组件高度。如果为正数,则在首选大小基础增加指定宽度和高度;如果为负数,则在首选大小基础减小指定宽度和高度。...如果需要在JScrollPane面板中放置多个组件,需要将多个组件放置JPanel面板,然后将JPanel面板作为一个整体组件添加在JScrollPane组件。...对象表示,常用构造方法有: public JButton() public JButton(String text) public JButton(Icon icon) public JButton(

    5.4K10

    基于Java实现图像浏览器设计与实现

    JPG.java class PaintCanvas extends Canvas类, 这个代码实现了一个绘图 Canvas 组件,用户可以 Canvas 用鼠标拖动绘制线条,并且绘图内容会保存在...构造函数中: 创建了一个 300x300 像素 BufferedImage 作为绘图区域,并获取它 Graphics2D 对象。...public void paint(Graphics g)方法被重写,用于 Canvas 组件绘制 drawingArea 内容。...JButton button: 一个按钮,标签为 “保存”,用于触发保存操作。 构造函数: 初始化按钮,并为按钮添加点击事件监听器。...,或者对已有的图片进行旋转、放大、缩小、下一张、一张和删除 成员变量: 查看图片时候控制数组下标 在对图片进行处理时候控制数组下标 str判断读取文件后缀名是jpg还是

    12110

    Swing常用组件

    这个方法返回值是一个Class对象,它提供了有关对象所属类信息。Class类有许多有用方法,可以用来获取类名称、包名、超类等信息,还可以通过反射来获取类字段、方法和构造函数等。...构造方法 JButton构造方法有多个: JButton():创建一个默认没有文本和图标的按钮。...JButton常用成员函数方法 JButton类是Swing组件库中一个按钮组件,常用成员方法如下: JButton(String text):使用指定文本创建一个新按钮。...JPasswordField 继承 JTextField 成员方法基础,还提供了成员方法 setEchoChar(),用来改变密码框回显字符。...在这个示例中,我们使用了DefaultListModel来保存项目列表,并将其作为参数传递给JList构造函数。然后,我们创建了两个按钮,一个用于添加项目,另一个用于删除选定项目。

    10710

    Java 期末复习 (已完结)

    6 子类不会继承父类构造器*,而是子类被实例化时会默认调用父类构造器 如果父类构造器被 重载,那么子类中构造器也必须初始化父类构造器 举个例子哈 ?...方法重写?)Override ? 9 内存机制 ? 方法区 逻辑 可以认为****堆中 ? 10 Object类 ? 11 垃圾回收 ? ? ? ? 7 ? ?...但是静态内部类 可以访问外部静态属性和方法 String类 ? 聊聊正则表达式 ?...上面会造成编译错误 ★JAVA里面没有这种if(int) 只有if(true/false) ? ? ? ★构造方法也可以 重载 ?...事件监听器(Event Listener):负责监听事件源发生特定类型事件,当事件到来时还必须负责处理相应事件; ★Swing中,对话框有几种?

    95930

    王者荣耀角度下分析面向对象程序设计B中23种设计模式之生成器模式

    · 生成器模式王者荣耀中应用 · ?...很显然,在编写代码时无法构造方法中进行硬编码来满足所有玩家对组件组合(布局)要求,而是将布局结果对象构造过程分成若干个步骤,即根据当前组件个数,一个接口中定义若干个方法,每个方法负责创建布局结果对象一个组件...; ③可以更加精细有效地控制对象构造过程,生成器将对象构造过程分解成若干步骤,这就使程序可以更加精细有效地控制整个对象构造; ④生成器模式将对象构造过程与创建该对象类解耦,使对象创建更加灵活有弹性...生成器模式适用情景: ①当系统准备为用户提供一个内部结构复杂对象,而且构造方法中编写创建该对象代码无法满足用户需求时,就可以使用生成器模式来构造这样对象; ②当某些系统要求对象构造过程必须独立于创建该对象类时...更多设计模式王者荣耀中应用请点击我→设计模式王者荣耀中应用 欢迎留言,一起交流学习 感谢阅读 END

    80510

    Java图形用户界面设计布局管理器

    由于操作系统存在差异,例如在windows,我们要达到这样效果,需要把该Lable组件宽和高分别设置为100px,20px,但是Linux操作系统,可能需要把Lable组件宽和高分别设置为120px...AWT 提供了多种布局管理器类,不同布局管理器类布局策略和算法也不同,常用有 FlowLayout、BorderLayout、GridLayout 和 CardLayout。...首先导入java.awt包,这是Java标准图形界面库。 创建一个名为"test"public类。 main函数中创建一个Frame对象,参数为窗口标题。...(true); } } 此示例创建了一个主窗口,并使用BorderLayout布局面板添加了五个按钮。...GUI 组件横向内部填充大小,即 该组件最小尺寸基础还需要增大多少. ipady 设置受该对象控制 GUI 组件纵向内部填充大小,即 该组件最小尺寸基础还需要增大多少. insets

    15910

    JAVA学习中Swing部分JDialog对话框窗体简单学习

    ,  * JDialog功能就是是从一个窗体中弹出另一个窗体,就像是使用浏览器时弹出的确定对话框一样  *  * 2:JDialog窗体和JFrame窗体类似,使用时也需要调用getContentPane...()方法将  * 窗体转化为容器,然后容器中设置窗体特性  *  * 3:JDialog有五种构造方法,可以用来指定标题,窗体,和模式对话框  * @author biexiansheng  *...        jf.setTitle("这是窗体转化为容器");         jf.setSize(200,200);//设置容器大小         jf.setVisible(true);...        jf.setTitle("这是一个容器");//设置容器标题         jf.setVisible(true);//设置容器可视化         jf.setSize(450...    //时调用方法名称都基本相同,如设置窗体大小,设置窗体关闭状态等     public MyJDialog(MyFrame frame){//定义一个构造方法         //实例化一个

    1.8K70

    超详细Java容器、面板及四大布局管理器应用讲解!

    (jButton); //将按钮加入到容器 container.remove(jButton); //将按钮从容器中移除 setLayout(null); //清空布局管理器 setVisible...绝对布局管理器 除了网格布局管理器、流布局管理器、边界布局管理器这三种布局方式以外,还有一种较为不同布局方式就是绝对布局,所谓绝对布局,就是按照一定坐标数据将组件坐标和大小硬性设置在窗体。...默认情况下,组将在流布局管理器中都是以居中排列,当然排列顺序是可以改变, FlowLayout类中构造函数中有如下三种: Public FlowLayout(); Public FlowLayout...(int alignment); Public FlowLayout(int alignment, int horizGap, int vertGap); 以上构造函数alignment参数表示组件采用流布局管理器后每一行具体排放位置...Public FlowLayout(int alignment, int horizGap, int vertGap);构造方法中,后面的参数horizGap和vertGap分别表示以像素为单位指定组件之间水平间隔和垂直间隔

    2.8K10

    王者荣耀角度下分析面向对象程序设计B中23种设计模式之生成器模式

    · 生成器模式王者荣耀中应用 · 一、简述 王者荣耀这款游戏中,玩家可以根据自己喜好来调整页面布局,比如有的玩家觉得左侧出装顺手,而有的玩家则觉得右侧出装顺手;再比如说玩家局内想要通过展开地图向队友发送信号时...很显然,在编写代码时无法构造方法中进行硬编码来满足所有玩家对组件组合(布局)要求,而是将布局结果对象构造过程分成若干个步骤,即根据当前组件个数,一个接口中定义若干个方法,每个方法负责创建布局结果对象一个组件...指挥者职责是负责向用户提供具体生成器,即指挥者将请求具体生成器来构造用户所需要product对象,如果所请求具体生成器成功构造出product对象,指挥者就可以让该具体生成器返回所构造product...,使用户无需了解该对象具体组件; ③可以更加精细有效地控制对象构造过程,生成器将对象构造过程分解成若干步骤,这就使程序可以更加精细有效地控制整个对象构造; ④生成器模式将对象构造过程与创建该对象类解耦...生成器模式适用情景: ①当系统准备为用户提供一个内部结构复杂对象,而且构造方法中编写创建该对象代码无法满足用户需求时,就可以使用生成器模式来构造这样对象; ②当某些系统要求对象构造过程必须独立于创建该对象类时

    60200

    java swing开发窗体程序开发(一)GUI编程

    JMenu menu1,menu2,submenu;//菜单 JMenuItem item1,item2;//菜单项 /** * 创建这个窗口构造函数...JFrame用于设置位置 setSize(width,height);//该函数继承至JFrame用于设置大小 setVisible(true);//同上...使用add(String text,Component c);//这个函数来指定选项卡名字和组件之间对应关系 选项卡位置构造JTabbedPane对象时可以指定,其构造函数参数为int类型,实际是一个静态常量...getLayer(Component c);//可以获得一个组件Layer (五)设置布局 即组件面板布局 容器/面板通过调用setLayout(布局对象)来设置布局 1:FlowLayout...这些组件层叠放在一起,只有最前面可以显示。 顺序并不是栈,而是队列,即第一个添加进去组件,显示最前面,后面的一次往后排。

    2.8K30

    Java课程设计-学籍信息管理系统「建议收藏」

    执行过程中,由try所指定代码中语句会生成异常对象并抛出。catch语句参数类似于方法声明,包括一个异常类型和异常对象。...它不以关键字比较为基本操作,采用直接寻址技术。在理想情况下,无须任何比较就可以找到待查关键字,查找期望时间为O(1)。 散列表运算有查找、插入和删除。...表4-10 其他类介绍表 名称 功能 备注 actionPerformed 处理ActionEvent监听事件 接口方式,内部函数 input 创建录入界面 构造函数 change 创建更改界面 构造函数...inquire 创建查询界面 构造函数 delete 创建删除界面 构造函数 table 创建表格界面 构造函数 五、软件测试与使用 1-1管理员登陆界面(图5-1、5-2)...然而我对数据库只是略懂一二,根本看不懂他们是什么,随后,我还是下定决心自己写一份简单吧。

    2.5K34
    领券