Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >动态JFrame -更改JFrame内容

动态JFrame -更改JFrame内容
EN

Stack Overflow用户
提问于 2015-04-16 01:45:51
回答 1查看 4.8K关注 0票数 0

我最近一直在开发软件应用程序,这些应用程序大多是非常基础的,而且我遇到了一个问题。

我正在开发的应用程序有许多不同的菜单和屏幕,我希望JFrame在单击按钮时交替显示。

考虑到这是大多数应用程序似乎正在实现的特性,因此我可以看到令人惊讶的很少信息,这让我怀疑我的方法是否完全失效,但是有一些示例代码说明了这种方法。

因此,我的问题是:( a)实现这一目标的最佳方法是什么;( b)我当前的代码有什么问题?然而,前一个问题是最重要的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class Demo {
    JFrame frame;
    JButton nextButton = new JButton ("Next Screen");

    public void setup() {
        frame = new JFrame();
        frame.setVisible(true);
        frame.add(new PanelOne());
        frame.pack();
    }


    public class PanelOne extends JPanel { {
        this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
        this.add(new JLabel("Label One"));
        this.add(new JLabel("Label Two"));
        this.add(new JLabel("Label Three"));
        this.add(new JLabel("Label Four"));
        this.add(new JLabel("Label Five"));
        JButton button = new JButton("Next Screen");
        button.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                swapPanel();
            }
        });
        this.add(button);
    } }
    public class PanelTwo extends JPanel {{
        this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
        this.add(new JButton("Button One"));
        this.add(new JButton("Button Two"));
        this.add(new JButton("Button Three"));
        this.add(new JButton("Button Four"));
        this.add(new JButton("Button Five"));
    }}


    protected void swapPanel() {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {

                frame.removeAll();
                frame.add(new PanelTwo());
                frame.invalidate();
                frame.revalidate();

            }

        });

    }

    public static void main (String[] args) {
        Demo demo = new Demo();
        demo.setup();
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-16 01:53:33

用这个作为你的代码..。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class Demo {
    JFrame frame;
    JButton nextButton = new JButton ("Next Screen");
    PanelOne p = new PanelOne();
    public void setup() {
        frame = new JFrame();
        frame.setVisible(true);

        frame.add(p);
        frame.pack();
    }


    public class PanelOne extends JPanel { {
        this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
        this.add(new JLabel("Label One"));
        this.add(new JLabel("Label Two"));
        this.add(new JLabel("Label Three"));
        this.add(new JLabel("Label Four"));
        this.add(new JLabel("Label Five"));
        JButton button = new JButton("Next Screen");
        button.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                swapPanel();
            }
        });
        this.add(button);
    } }
    public class PanelTwo extends JPanel {{
        this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
        this.add(new JButton("Button One"));
        this.add(new JButton("Button Two"));
        this.add(new JButton("Button Three"));
        this.add(new JButton("Button Four"));
        this.add(new JButton("Button Five"));
    }}


    protected void swapPanel() {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {


                frame.remove(p);
                frame.add(new PanelTwo());
                frame.invalidate();
                frame.revalidate();

            }

        });

    }

    public static void main (String[] args) {
        Demo demo = new Demo();
        demo.setup();
    }
}

希望能帮上忙..。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29671024

复制
相关文章
Java开发 窗体JFrame
package expression; import java.awt.Color; import java.awt.Container; import javax.swing.*; public class Demo extends JFrame{//继承父类 public Demo(){ setVisible(true);//设置窗体可见 setTitle("窗体标题"); /*窗体关闭规则 * EXIT_ON_CLOSE 关闭窗体,并停止程序 * DO_NOTH
用户2965768
2019/02/26
1.5K0
初学java之JFrame窗口模式
1 package project; 2 import javax.swing.*; 3 import java.awt.*; 4 public class test 5 { 6 public static void main(String args[]) 7 { 8 JFrame window1 , window2; 9 window1 = new JFrame("第一个"); 10 window2 = new JFrame("第二个");
Gxjun
2018/03/22
1.3K0
JAVA学习中Swing概述中的JFrame学习
别先生
2017/12/29
1.7K0
java学习之路:30.JFrame窗体,JDIalog窗体
开头说一下,如果使用 import java.awt.*; import javax.swing.*; 出现错误,请查看: 解决无法使用java.awt.和javax.swing. 1.JFrame窗体 package number; import java.awt.*; import javax.swing.*; public class Xuexi extends JFrame{ public void CreateJFrame(String title) { JFrame jf =new JFr
花狗Fdog
2020/10/28
2.2K0
java学习之路:30.JFrame窗体,JDIalog窗体
GridBagLayout 以及 GridBagConstraints 用法「建议收藏」
GridBagLayout是一个灵活的布局管理器,部件如果想加入其中需借助GridBagConstraints,其中有若干个参数,解释如下:
全栈程序员站长
2022/09/30
1.7K0
Java 基于JFrame的一个简单学生成绩管理系统(内含详细注释)
/* * 若尘 */ package demo; import java.awt.BorderLayout; import java.awt.Container; import java.awt.FlowLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.a
ruochen
2021/05/15
1.4K0
Java 基于JFrame的一个简单学生成绩管理系统(内含详细注释)
Java实现时间动态显示方法汇总
这篇文章主要介绍了Java实现时间动态显示方法汇总,很实用的功能,需要的朋友可以参考下
全栈程序员站长
2022/07/18
1.8K0
Java Swing绘制2维3维混合动态散点图
使用的2D绘图包是jfreechart,3D绘图包是matplotlib for java V2 PS:由于和我研究内容相关,如果看到类似SolutionSet的结构体,这是Jmetal中的设置本质我只要其中的double数值。 思路 一个Jframe 四个Jpanel,网格布局 第一个三维,后三个2维 布局和绑定 MatPlot3DMgr mgr1 = new MatPlot3DMgr();//mgr for obj1 MatPlot3DMgr mgr2 = new MatPlot3DM
演化计算与人工智能
2021/03/16
1.3K0
Java Swing绘制2维3维混合动态散点图
java swing开发窗体程序开发(一)GUI编程[通俗易懂]
Java SWing就是java提供的一个类库专门用于开发窗体程序的,相对于C#的winform,java swing的开发要比C#更加麻烦,他不像C#拥有可视化的界面编辑工具 而是需要像QT一样纯代码式GUI编程。java的好处就是通用性强,跨平台,这个java窗体程序做好之后,哪都可以用。然而C#的winform只能运行在有.net框架上 的平台,然而.net支持最好的,也就只有windows了。C#的开发效率更高
全栈程序员站长
2022/09/23
3K0
java swing开发窗体程序开发(一)GUI编程[通俗易懂]
Java Swing客户端小项目
以上是第一个小工具,只是用了txt文件进行数据存储,第二个客户端按数据源分为以下两种:
JQ实验室
2022/02/11
2.1K0
用JavaSocket编程开发聊天室,附超详细注释
因为运行的过程中随时会有客户端连上服务器,所以服务器端需要一个线程来等待客户端的链接。其次,每一个服务器端的用户随时都有可能和服务器就发送消息,因此每新增一个用户就需要为该用户建立一个聊天的线程。 服务器端还需要具备踢人、群发消息、发送消息的功能。这些功能的本质其实就是发送对应格式消息(消息格式见下文),只是发送的消息格式不同罢了。
全栈程序员站长
2022/07/04
1.8K0
用JavaSocket编程开发聊天室,附超详细注释
java学习之路:31.java常用布局管理器(绝对,流,边界,网格)
绝对布局,就是可以硬性指定组件在容器中的位置和大小,使用绝对坐标来指定组件的位置与大小。 步骤如下: (1)使用Container.setLayout(null)方法取消布局管理器。 (2)使用Component.setBounds()方法设置每个组件的大小与位置。
花狗Fdog
2020/10/28
1.2K0
java学习之路:31.java常用布局管理器(绝对,流,边界,网格)
Java入门(12)-- Swing程序设计
GUI(图形用户界面)为程序提供图形界面,它最初的设计目的是为程序员构建一个通用的GUI,使其能够在所有的平台上运行,但Java1.0中基础类AWT(抽象窗口工具箱)并没有达到这个要求,于是Swing出现了,它是AWT组件的增强组件,但是它并不能完全替代AWT组件,这两种组件需要同时出现在一个图形用户界面中。
爱学习的程序媛
2022/04/07
5.5K0
Java入门(12)-- Swing程序设计
grid布局方式_grid网格布局
由GridBagConstraints类实现的布局管理器称为网格组布局管理器,它实现了一个动态的矩形网格,这个矩形风格由无数个矩形单元格组成,每个组件可以占用一个或多个这样的单元格。
全栈程序员站长
2022/10/04
1.2K0
grid布局方式_grid网格布局
java swing一篇轻松学习(高考后可以自学)
是一种中间层容器,它能容纳组件并将组件组合在一起,但它本身必须添加到其他容器中使用。
红目香薰
2022/11/30
9.7K0
java swing一篇轻松学习(高考后可以自学)
java collections.sort_java中
public static void main(String[] args) {
全栈程序员站长
2022/10/01
6530
Java-文本编辑器实现
1.闪屏 由于加载页面需要时间 原想用 SplashScreen 由于打包成jar包才能用所以这里用jframe进行替代
圆号本昊
2021/09/24
8040
Java-文本编辑器实现
Java GUI编程11—单选按钮:JRadioButton
单选按钮就是在给定的多个选择项中选择一个,并且只能选择一个。在Swing中可以使用JRadioButton完成一组单选按钮的操作,JRadioButton的常用方法如下表。
全栈程序员站长
2022/09/02
4.7K0
Java GUI编程11—单选按钮:JRadioButton
仿QQ聊天室项目_仿QQ程序设计与开发
创建普通Java项目 并创建model、view、tools、common 四个包
全栈程序员站长
2022/10/03
1.4K0
仿QQ聊天室项目_仿QQ程序设计与开发
Java-GUI编程之Swing组件
很多情况下,我们常常喜欢给不同的组件设置边框,从而让界面的层次感更明显,swing中提供了Border对象来代表一个边框,下图是Border的继承体系图:
愷龍
2022/09/26
2.3K0
Java-GUI编程之Swing组件

相似问题

如何动态更改JFrame大小

10

如何动态更改JFrame背景?

11

如何动态更改Swing JFrame大小

12

动态地将JFrame大小更改为JTable内容

12

缩放JFrame内容

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文