精华内容
下载资源
问答
  • Matlab中实现gui界面之间的切换
    千次阅读
    2021-12-01 19:44:22

    在实际应用中我们经常需要在不同的界面之间实现跳转,那么在设计gui界面时,我们通常是使用一个“按钮”来实现界面间的转换,今天,小编就带大家一起实现这一简单的功能。

    首先,在matlab命令行窗口中输入:

    guide

    创建两个如下的窗口:

    注意到第一个图像中小编创建了一个“Open a new figure”按钮,这个按钮就是用来实现界面跳转功能的。另一张图像如下所示:

    这张图像只包含一个“Exit”按钮。

    此时在First_Fig.m文件中“Open a new figure”对应的按钮响应函数(即为本次试验的pushbutton2)下修改代码如下 :

    % --- Executes on button press in pushbutton2
    更多相关内容
  • Java GUI 菜单面板(panel) 切换显示

    万次阅读 多人点赞 2019-06-07 11:41:11
    在Java GUI编程中,要求点击菜单栏中不同的菜单项,切换主面板中的显示内容。 解决: 主面板为Panel contentPanel(用于放置其他具体的功能面板)。 其他面板,如Panel p1, p2,先自定义好(这些功能面板,向...

    NOTE

    以下共两种解决方案。

    1. 手动操作面板容器和其组件(add, remove等)
    // 以contentPanel为底,其上覆盖想要展示的panel内容(切换panel)。
    private void showSpecifiedPanel(Panel contentPanel, Panel showPanel) {
        contentPanel.removeAll();
        contentPanel.add(showPanel);
        contentPanel.validate();
        contentPanel.repaint();
    }
    
    1. 直接设置窗口的contentPane属性(推荐)。
    // 切换内容面板
    public void changeContentPane(Container contentPane) {
        this.setContentPane(contentPane);
        this.revalidate();
    }
    

    后期如果有其他解决方案,我会继续追加。

    需求

    在Java GUI编程中,要求点击菜单栏中不同的菜单项,切换主面板中的显示内容。
    解决:
    主面板为Panel contentPanel(用于放置其他具体的功能面板)。
    其他面板,如Panel p1, p2,先自定义好(这些功能面板,向contentPanel面板上添加)。
    当点击被监听器监听着的菜单项后,执行以下方法:

    // 以contentPanel为底,其上覆盖想要展示的panel内容(切换panel)。
    private void showSpecifiedPanel(Panel contentPanel, Panel showPanel) {
        contentPanel.removeAll();
        contentPanel.add(showPanel);
        contentPanel.validate();
        contentPanel.repaint();
    }
    

    即:先移除contentPanel上的所有组件,然后放置所需的、具体的某个功能面板。
    然后执行validate()repaint()方法,重新绘制图形。

    • 其他相关API
      在处理多Panel切换的过程中,检索到的其他相关API如下:
      hide() 隐藏面板
      show() 显示面板
      isVisible() 面板是否可见
      setVisible(boolean isVisible) 设置面板的可见性
      一开始的解决思路是重叠添加多个面板,然后控制各个面板的可见状态(显示,隐藏)。奈何不成。所以还是使用之上的方法。

    效果图

    学生菜单项下有添加查看两个菜单项。
    点击添加显示添加学生信息面板。
    点击查看显示查看学生信息面板。

    • 主面板
      在这里插入图片描述
    • 添加学生信息(面板细节自定义)
      在这里插入图片描述
    • 查看学生面板(细节自定义)
      在这里插入图片描述

    Code

    import java.awt.BorderLayout;
    import java.awt.Label;
    import java.awt.Menu;
    import java.awt.MenuBar;
    import java.awt.MenuItem;
    import java.awt.Panel;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.JFrame;
    
    public class Test {
        public static void main(String[] args) {
            new MyFrame();
        }
    }
    
    class MyFrame extends JFrame implements ActionListener {
        private static final long serialVersionUID = 1L;
        MenuBar menuBar;    // 菜单栏
        Menu student;       // 菜单
        MenuItem add, show; // 菜单项
        Panel contentPanel; // 内容面板,其上用于添加其他待切换的面板
    
        public MyFrame() {
            // 初始化组件
            menuBar = new MenuBar();
            student = new Menu("学生");
            add = new MenuItem("添加");
            show = new MenuItem("查看");
            contentPanel = new Panel();
    
            // 菜单项添加事件监听器
            add.addActionListener(this);
            show.addActionListener(this);
    
            // 设置窗口的菜单栏,菜单和各个菜单项。
            student.add(add);
            student.add(show);
            menuBar.add(student);
            setMenuBar(menuBar);
    
            // 设置布局为边界布局管理器。将contentPanel添加到窗口中心位置。
            setLayout(new BorderLayout());
            contentPanel.add(new Label("欢迎使用教学管理系统"));    // 欢迎页消息
            add(contentPanel, BorderLayout.CENTER);
            
            // 窗口的其他参数
            setTitle("测试");
            setBounds(300, 50, 400, 300);
            setVisible(true);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
        
        @Override
        public void actionPerformed(ActionEvent e) {
            Object source = e.getSource();
            if (source == add) {
                showSpecifiedPanel(contentPanel, new MyPanel("请添加学生信息"));
            } else if (source == show) {
                showSpecifiedPanel(contentPanel, new MyPanel("您正在查看学生信息"));
            }
        }
    
        // 以contentPanel为底,其上覆盖想要展示的panel内容(切换panel)。
        private void showSpecifiedPanel(Panel contentPanel, Panel showPanel) {
            contentPanel.removeAll();
            contentPanel.add(showPanel);
            contentPanel.validate();
            contentPanel.repaint();
        }
        
    }
    
    // 简易地获取所需的面板(使用时需自定义)
    class MyPanel extends Panel {
        public MyPanel(String msg) {
            this.add(new Label(msg));
        }
    }
    

    方案2

    JFrame类的实例方法:
    setContentPane(Container contentPane)
    revalidate()

    封装方法:

    // 切换内容面板
    public void changeContentPane(Container contentPane) {
        this.setContentPane(contentPane);
        this.revalidate();
    }
    

    运行效果相同。都是点击不同的菜单项后,切换不同的主面板。

    代码(将以上源码稍作修改即可):

    import java.awt.Container;
    import java.awt.Label;
    import java.awt.Menu;
    import java.awt.MenuBar;
    import java.awt.MenuItem;
    import java.awt.Panel;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.JFrame;
    
    public class Test {
        public static void main(String[] args) {
            new MyFrame();
        }
    }
    
    class MyFrame extends JFrame implements ActionListener {
        private static final long serialVersionUID = 1L;
        MenuBar menuBar;    // 菜单栏
        Menu student;       // 菜单
        MenuItem add, show; // 菜单项
        Panel contentPanel; // 内容面板,其上用于添加其他待切换的面板
    
        public MyFrame() {
            // 初始化组件
            menuBar = new MenuBar();
            student = new Menu("学生");
            add = new MenuItem("添加");
            show = new MenuItem("查看");
            contentPanel = new Panel();
    
            // 菜单项添加事件监听器
            add.addActionListener(this);
            show.addActionListener(this);
    
            // 设置窗口的菜单栏,菜单和各个菜单项。
            student.add(add);
            student.add(show);
            menuBar.add(student);
            setMenuBar(menuBar);
    
            // 设置布局为边界布局管理器。将contentPanel添加到窗口中心位置。
            this.setContentPane(new MyPanel("这是欢迎页 - setContentPane()"));
            
            // 窗口的其他参数
            setTitle("测试");
            setBounds(300, 50, 400, 300);
            setVisible(true);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
        
        @Override
        public void actionPerformed(ActionEvent e) {
            Object source = e.getSource();
            if (source == add) {
                changeContentPane(new MyPanel("添加学生信息 - setContentPane()"));
            } else if (source == show) {
                changeContentPane(new MyPanel("查看学生信息 - setContentPane()"));
            }
        }
        
        // 切换内容面板
        public void changeContentPane(Container contentPane) {
            this.setContentPane(contentPane);
            this.revalidate();
        }
    
    }
    
    // 简易地获取所需的面板(使用时需自定义)
    class MyPanel extends Panel {
        public MyPanel(String msg) {
            this.add(new Label(msg));
        }
    }
    
    展开全文
  • Matlab GUI操作5:多个窗口之间切换

    千次阅读 2021-08-30 01:15:02
    操作比较简单,对语句即可。 实例如下

    这个操作比较简单,用对语句即可。
    实例功能,有两个界面,F1和F2,点击F1中的按钮,F1界面关闭,F2界面打开。
    具体操作如下:
    在F1.fig中建立一个按钮,tag改为“打开F2”,如下图

    在这里插入图片描述
    打开编辑器,找到按钮的回调函数(callback),写入下面代码

    close;%关闭当前窗口
    set(F2,'Visilabe','on');%打开F2界面
    

    运行F1界面,点击按钮,F1界面消失,F2界面出现。如下图
    在这里插入图片描述

    操作完成

    展开全文
  • MATLAB GUI多界面切换问题及其他相关问题

    万次阅读 多人点赞 2019-06-01 15:03:59
    首先是切面切换的问题,这是个简单的问题,其实就是新建一个GUI,然后在GUI上创建面板的工作 然后选择左侧菜单栏的倒数第二行第二个“面板”按钮,新建两个uipanel。如下图所示。两个面板我分别命名为面板1、...

    由于前段时间,一直在从事MATLAB GUI方面的设计工作,尤其是在多界面切换方面的经验尤其多,所以分享出来。

    首先是多切面切换的问题,这是个简单的问题,其实就是新建一个GUI,然后在GUI上创建多面板的工作

    然后选择左侧菜单栏的倒数第二行第二个“面板”按钮,新建两个uipanel。如下图所示。两个面板我分别命名为面板1、面板2.

    然后我们可以把需要添加的组件添加到两个面板中去。

    其实本质上就是将原来创建在GUI里的组件装在面板里了而已,没有任何难度。

    再接着,添加两个按钮,实现界面切换,功能需求就是,点击功能一,显示面板1,隐藏面板2;点击功能二,显示面板2,隐藏面板1。这个也不难,只需要打开按钮“功能一”的回调函数,里面添加这两个语句即可。

    set(handles.uipanel1,'visible','on');
    set(handles.uipanel2,'visible','off');

    类比可以得到显示面板2,隐藏面板1的功能。

    肯定有小伙伴好奇怎么将两个面板显示在同一位置,并且通过也可以实现切换功能。

    我用的方法是用代码调整面板的位置,具体代码为:

    set(handles.uipanel1,'position',[0 0 0]);

    MATLAB里的坐标表示需要读者提前去熟悉一下,数值之间别加逗号。想通过这种方法实现同一位置界面切换,需要满足两个条件。

    一:两个面板差不多大,这一点你可以通过上面的语句设置,也可以创建面板时就将面板设置为差不多大。

    二:两个面板不存在父子关系,如果panel1和panel2之间存在父子关系,那么可以通过下面的语句来调整:

    handles.output = hObject;
    
    set(handles.uipanel1,'parent',gcf);
    set(handles.uipanel2,'parent',gcf);

     这两个语句是在GUI的OpeningFcn(hObject, eventdata, handles, varargin)下边添加,当然我不保证能成功,这个可能和MATLAB的版本有关,看其他博客里有人实现的,姑且认为可以吧。

    当然我用的方法比较笨,即创建面板上之后再将面板挪到重叠到一起。这是个细心的活儿,你需要保证两个面板的元素不存在遮挡,要不然还是会出现其中一个面板在点击按钮之后跳到页面左下角的情况。对于这种情况大家可以参考其他博客。

    然后大家解决MATLAB问题的时候,可以考虑去MATLAB论坛,虽然上面很多问题都没有答案,甚至于很多帖子都是2008年的老问题。MATLAB中文论坛真该出个精品问答板块了。当然也有人推荐去stack overflow,用英文问问题还是很费力,听说90%的编程问题都能在上面找到答案。

    最后讲一下将GUI生成exe的方法,MATLAB命令行直接出入deploytool,出现下图

     选择第一个,之后进入

     在add main file处选择你产生的GUI对应的.m文件,然后添加文件依赖,点击package,慢慢等待即可。最后生成的exe可能会无法运行,这里面的原因千奇百怪,博客、论坛也没有一个完美的解决方案,像.dll库添加进去exe也无法运行,这个问题问过许多网友,没一个知道怎么解决的。如果有人有什么新的技巧,解决exe无法运行的,还希望在评论里告知。

    这次的分享到这里结束了,我要投身到下一个工作中去了,再见。

    展开全文
  • matlab gui界面切换问题小结

    万次阅读 多人点赞 2018-03-07 15:28:28
    近期想实现一个gui通过菜单切换界面实现不同的功能,即点不同的菜单栏选项出现不同的界面: 想法1.0:百度到一种方法,在菜单栏callback回调函数下通过句柄调用另一个界面, h=bp;%bp为另一个gui界面的tag 这样...
  • 关于java的GUI简单切换界面

    万次阅读 多人点赞 2019-03-26 20:00:57
    在刚开始学习java的gui界面设计的时候因为课本上没有相关切换界面的介绍,所以如何进行简单的一界面切换困扰了我很久。因此我上网看了一些代码,却发现网上的大多数代码都很繁琐,仔细看下去感觉有许多冗余,虽然...
  • 【Java】GUI界面切换的解决方案

    千次阅读 2019-12-09 15:58:37
    Java的GUI界面切换的解决方案
  • 文章目录前言一、qtdesinger做1主界面,2个子界面出来,两pushbutton都给连接到stackedwidget的信号。二、1主界面、2个子界面,全部转成py文件。1、打开两子界面的py文件,把里面的类名分别改为Ui_...
  • STM32之简易GUI(多级菜单进阶版)

    千次阅读 2022-03-10 10:56:19
    很久之前,写过一简易的多级菜单,如今回头看,我都不敢承认那玩意是自己写的,于是打算重新写过一,并且做成一简易的GUI。原来的OLED,现在改成了TFT(ST7789驱动)。但是答题的思路还是不变的。 先说说...
  • 在的底部,提到了一个称为“ RSwitch”的“其他二进制文件”,它是“一个小型GUI,可让您在R版本之间进行快速切换(如果您安装了多个版本的R Framework)”。 所述切换要求您使用R的macOS开发人员页面R中的R的“ tar...
  • PyQt5菜单栏控件QMenuBar介绍QMenuBar在QMainWindow对象的标题栏下方,水平的QMenuBar被保留显示QMenu对象QMenuBar类提供了一个可以包含一个或多个QAction对象或 级联的QMenu对象,要创建一个弹出菜单,Pyqt提供了...
  • 如何通过按钮,实现两面板之间(uipanel)的切换? matlab GUI 面板控件介绍 matlab中 面板控件面板是一封闭区间,在面板里的控件是生成在面板上,这些控件与面板的之间是父子关系,我们可以将实现某一特定功能...
  • 如果是 Linux, 可以修改 kflash_gui.desktop 里面的路径, 然后管理员身份复制到/usr/share/application 目录, 然后就可以在系统菜单里面找到kflash_gui的图标了,点击即可打开 选择 bin 文件或者 kfpkg 文件,...
  • 一切都通过简单的界面、键盘热键和托盘菜单进行管理,因此您可以快速切换 EQ 预设和声音模式。 小巧不显眼的 GUI 在任何给定时刻为您提供恰到好处的信息量。 Mega Switcher 自动化了很事情,让您的聆听过程更加...
  • 各个控件的使用方法2.1.1 按钮2.1.2 滑动条2.1.3 文本框2.1.4 单选框和复选框和切换按钮2.1.5 弹出式菜单和列表框2.1.6 按钮组2.1.7 菜单编辑器 如果不想看文章,可以看参考视频1或者参考视频2 阅读本文,可以节省一...
  • PyQT实现窗口切换

    2020-12-23 18:14:14
    最近做软件,PyQT写的,在实现菜单栏点击弹出新窗口的时候严重被卡壳,发现WxPython的思想和方式来做完全无法实现。PyQT的中文资料实在是太少了。看了点英文资料和QT的资料,逆推PyQT的实现方法,总算搞定。...
  • 值得学习的单片机菜单框架(附源码)

    千次阅读 2021-09-27 01:40:47
    点击上方“小麦大叔”,选择“置顶/星标公众号”福利干货,第一时间送达大家好,我是小麦,以前单片机做用户交互的菜单的时候,都比较痛苦,如何写一复用性高,方便维护,可扩展性高的GUI框架呢...
  • 在网上查找关于Pyqt5的多个窗口相互切换的教程参差不齐,今天小编就把网上看到的方法和自己改编的程序分享给大家。后续再把这个功能应用到我之前写过的呵呵哒背单词神器中,推出2.0版本呵呵哒背单词神器。 # 窗口1...
  • 基于PyQt5实现同一窗口下界面切换

    千次阅读 2022-04-16 22:20:42
    基于Python和PyQt5实现同一窗口下界面切换 基于pyqt5控件tabWidget结合按钮点击实现同窗口下界面切换。每子界面均可拓展相应的功能。 效果 程序代码示例 1. 界面设计示例 # -*- coding: utf-8 -*- # Form...
  • 什么工具进行java GUI的开发?

    千次阅读 2021-02-27 19:54:37
    就非常啦,有现成的插件,也有IDE环境,下面我简单介绍一下:WindowBuilder这是一非常不错的Java GUI开发插件,支持Swing, AWT,SWT等众多组件,安装完成后,可以直接拖拽组件设计GUI界面,下面我简单介绍...
  • Python编写GUI程序

    千次阅读 多人点赞 2019-11-27 22:30:59
    Python编写GUI程序 一、关于GUI程序: 图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用...对于我们的常用的Windows操作系统下,编写GUI桌面程序方式很,包括Java的Swing包、 win...
  • 为什么首选这个GUI框架来介绍,个人感觉它有下面几个好处: GUI开发的急救之章 对刚开始开发GUI程序的同学比较友好 文档完整详实 不需要依赖其它杂七杂八的东西 如果你也受够了每次写出的程序只有DOS那个黑框,...
  • Java创建一简单的GUI程序

    千次阅读 2019-12-06 19:41:53
     Java GUI最早使用的工具包是AWT(抽象窗口工具包),这工具包提供了一套与本地图形界面交互的接口。AWT中的图形函数与操作系统所提供的图形函数之间有一一对应的关系。也就是说,当我们AWT来构建图形用户界面...
  • Qt之界面切换编程

    2021-02-01 13:23:47
    在Qt编程中经常遇到多个界面之间的切换, 比如从登录界面跳转到主界面, 主界面跳转到设置界面,在返回到主界面 下面更加这个流程实现一个例子: 主界面: 添加第二个界面 #include "dialog.h" #include "ui_...
  • OLED多级菜单记录

    千次阅读 多人点赞 2022-04-17 21:44:52
    可以自行查阅: SPI驱动:SPI写OLED(软硬件切换) IIC驱动:stm32配置总结-iic的使用 3、菜单移植 1、菜单的思路 之前在网上也看到很大佬讲过oled菜单,但是根绝实现起来都不太方便,最简单的肯定就是自己写好...
  • 1、来聊聊(轻松一刻)这里为大家挑选了一首经典的《逍遥叹》,逍遥自在的生活...今天给大家带来的内容是:小型GUI界面程序设计框架,这也是应位粉丝的需求和建议所以作者根据自身经验为大家带来这方面的设计思想和理...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,396
精华内容 7,358
关键字:

多个gui用菜单切换