精华内容
下载资源
问答
  • 2021-05-24 22:22:12

    今天聊聊关于Swing窗体如何实现在同一个窗体实现不同面板的切换的解决方案,这个问题也是一直困扰了我很久,都快半个多月了,因为我们数据库课设(是做一个 ***系统)要用到Java-Swing创建窗体,而我想实现这样一个功能:就是一个窗体上有几个不同的按钮,和一个主面板,通过点击按钮,切换不同的面板,即显示不同的内容。

    这个之前也在百度上找了很多很多的实现方案,但感觉实现方式都不是很理想,这里我做了一个改进的解决方案。实现步骤大体如下:

    1. 创建一个主窗体JFrame
    2. 在主窗体上添加一个主显示JPanel
    3. 在主窗体上添加切换按钮或者在菜单栏上添加按钮也行
    4. 写要替换显示的JPanel类,直接继承JPanel,这个JPanel类对应的面板大小建议设置和步骤2主显示JPanel的宽和高一致
    5. 在主窗体类中添加一个CardLayout cardLayout=new CardLayout()成员
    6. 给主显示JPanel设置步骤5的布局方式
    7. 创建要替换显示JPanel类的对象,将其添加到主显示JPanel中
    8. 给对应的按钮添加事件,调用cardLayout.show()方法要选择点击按钮后要切换显示的面板

    下面是我做的一个小demo,简单演示一下: 

    主窗体类:

    package gui2;
    
    import java.awt.BorderLayout;
    import java.awt.CardLayout;
    import java.awt.EventQueue;
    
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.border.EmptyBorder;
    import javax.swing.JButton;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    
    public class Jrame1 extends JFrame {
    
    	private JPanel contentPane;
    	CardLayout cardLayout=new CardLayout();
    
    	/**
    	 * Launch the application.
    	 */
    	public static void main(String[] args) {
    		EventQueue.invokeLater(new Runnable() {
    			public void run() {
    				try {
    					Jrame1 frame = new Jrame1();
    					frame.setVisible(true);
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}
    		});
    	}
    
    	/**
    	 * Create the frame.
    	 */
    	public Jrame1() {
    		setTitle("demo—同一个窗口不同面板切换");
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setBounds(100, 100, 450, 300);
    		contentPane = new JPanel();
    		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    		setContentPane(contentPane);
    		contentPane.setLayout(null);
    		
    		JPanel panel = new JPanel();
    		panel.setBounds(60, 10, 300, 200);
    		contentPane.add(panel);
    //		给主要显示面板添加布局方式
    		panel.setLayout(cardLayout);
    //		创建相应面板类的对象
    		P1 p1=new P1();
    //		将面板添加到住面板中,注意:add()方法里有两个参数,第一个是要添加的对象,第二个给这个对象所放置的卡片
    //		起个名字,后面调用显示的时候要用到这个名字
    		panel.add(p1,"p1");
    		P2 p2=new P2();
    		panel.add(p2,"p2");
    		
    		
    		JButton btnNewButton = new JButton("页面1");
    		btnNewButton.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    //				这里是点击按钮切换不同的页面
    //				cardLayout.show(参数 1,参数2)方法里面也有两个参数,
    //				参数1是表示指明你要在哪个容器上显示,
    //				参数2是指明要显示哪个卡片,即你要给出对应卡片的名字
    				cardLayout.show(panel, "p1");
    			}
    		});
    		btnNewButton.setBounds(70, 220, 97, 23);
    		contentPane.add(btnNewButton);
    		
    		JButton btnNewButton_1 = new JButton("页面2");
    		btnNewButton_1.addActionListener(new ActionListener() {
    			public void actionPerformed(ActionEvent e) {
    //				同上
    				cardLayout.show(panel, "p2");
    			}
    		});
    		btnNewButton_1.setBounds(251, 220, 97, 23);
    		contentPane.add(btnNewButton_1);
    	}
    }
    

    测试面板1: 

    package gui2;
    import javax.swing.JPanel;
    import javax.swing.JLabel;
    import java.awt.Font;
    import javax.swing.JTextField;
    import javax.swing.JButton;
    
    public class P1 extends JPanel {
    	private JTextField jt1;
    
    	/**
    	 * Create the panel.
    	 */
    	public P1() {
    		setLayout(null);
    		
    		JLabel lblNewLabel = new JLabel("我是页面1  (*^-^)");
    		lblNewLabel.setFont(new Font("宋体", Font.BOLD, 22));
    		lblNewLabel.setBounds(34, 26, 233, 69);
    		add(lblNewLabel);
    		
    		jt1 = new JTextField();
    		jt1.setBounds(34, 105, 100, 21);
    		add(jt1);
    		jt1.setColumns(10);
    		
    		JButton btnNewButton = new JButton("提交");
    		
    		btnNewButton.setBounds(146, 104, 97, 23);
    		add(btnNewButton);
    
    	}
    }
    

    测试面板2:

    package gui2;
    
    import javax.swing.JPanel;
    import javax.swing.JLabel;
    import java.awt.Font;
    import javax.swing.JButton;
    import javax.swing.JTextField;
    
    public class P2 extends JPanel {
    
    	/**
    	 * Create the panel.
    	 */
    	public P2() {
    		setLayout(null);
    		JLabel lblNewLabel = new JLabel("我是页面2  (*^▽^*)");
    		lblNewLabel.setFont(new Font("Dialog", Font.BOLD, 24));
    		lblNewLabel.setBounds(23, 10, 245, 94);
    		add(lblNewLabel);
    		
    		JTextField jt2 = new JTextField();
    		jt2.setBounds(42, 114, 206, 21);
    		add(jt2);
    		jt2.setColumns(10);
    		
    		JButton btnNewButton = new JButton("确定");
    		btnNewButton.setBounds(42, 145, 97, 23);
    		add(btnNewButton);
    		
    	}
    }
    

    相关效果图:点击下面按钮显示对应的面板内容

     

     

    这个实现方式自我感觉还是比较简洁方便的,有兴趣的可以尝试一下,哪有不对,欢迎各路大神指正!!!(*^▽^*)

     

    更多相关内容
  • C#创建的自定义窗口和面板在加载到CAD进行显示时,会自动获取句柄,有时候需要返回CAD界面进行操作(如选择对象)时,鼠标离开自定义窗口或者面板后,CAD无法获得句柄,需要点选一下CAD操作空间后,才能开始交互操作...

    C#创建的自定义窗口和面板在加载到CAD进行显示时,会自动获取句柄,有时候需要返回CAD界面进行操作(如选择对象)时,鼠标离开自定义窗口或者面板后,CAD无法获得句柄,需要点选一下CAD操作空间后,才能开始交互操作,给程序运行带来诸多不便:
    在这里插入图片描述
    为了解决该问题,需要利用Windows API函数SetFocus实现,具体步骤为:
    在类开头添加api函数申明

    [DllImport("user32.dll", EntryPoint = "SetFocus")]
    public static extern int SetFocus(IntPtr hWnd);
    
    同时,在窗体或面板类的MouseLeave事件中调运SetFocus函数
    
            private void PaletteDict_MouseLeave(object sender, EventArgs e)
            {
                SetFocus(Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Window.Handle);
            }
    
    但是,测试发现该方式在鼠标快速移动时,焦点切换明显滞后,为此,本人亲测发现,可以在具体的交互操作中继续添加SetFocus函数的调用:
    
                Document doc = acadApp.DocumentManager.MdiActiveDocument;
                DocumentLock docLock = doc.LockDocument();
                Database db = doc.Database;
                Editor ed = doc.Editor;
    
                SetFocus(doc.Window.Handle);//提前调用
    
                PromptEntityResult per = ed.GetEntity("\n请选择对象");
                using (Transaction tran=db.TransactionManager.StartTransaction()
                {
                	...
                }
    
    可有效解决焦点切换滞后的问题!
    
    展开全文
  • Java Swing:窗体面板,菜单,组件

    千次阅读 多人点赞 2019-05-30 21:34:21
    Java中对图形化知识Swing的基本认识(窗体+面板+菜单+组件)

    GUI----图形用户接口(Graphical User Interface)

    就是采用图形的方式,进行操作页面的显示
    Java提供了两个对GUI的实现:

    • AWT(Abstract Window Toolkit,抽象窗体工具包)
    • Swing(是后来出现的版本,功能更多,效果更好看,而且Swing是轻量级的)

    创建可见窗体

    使用JFrame frame = new JFrame();frame.setVisible(true);

    package GUI;
    
    import javax.swing.*;
    
    public class TestGUI {
        
        public static void main(String[] args) {
            //1.先创建一个窗体
            JFrame frame = new JFrame();
            
            //2.设置窗体的属性状态--从隐藏变为显示
            frame.setVisible(true);
    
        }
    }
    
    

    运行后,看电脑屏幕的左上角:
    在这里插入图片描述
    可以通过鼠标把它拉伸:
    在这里插入图片描述

    使右上角按钮真实的关闭

    使用frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    这个窗体被创建出来后,右上方的三个按钮都是有用的(最小化,最大化,关闭)

    但是关闭按钮的作用实际上不是真的关闭窗体,你看:
    在这里插入图片描述
    还在执行中,实际上他只是把窗体的状态切换回隐藏状态

    解决办法:

    package GUI;
    
    import javax.swing.*;
    
    public class TestGUI {
    
        public static void main(String[] args) {
            JFrame frame = new JFrame();
            frame.setVisible(true);
            
            //设置点击关闭按钮,则窗体执行完毕
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
        }
    }
    
    

    设置窗体出现的位置和大小

    frame.setBounds(500,250,300,300);
    这个窗体有点羞涩啊,每次都从左上角出现,这很不好
    而且出现时的大小就这么一丢丢,也不好

    在Java中坐标系是这么表示的:
    在这里插入图片描述
    解决办法:

    package GUI;
    
    import javax.swing.*;
    
    public class TestGUI {
    
        public static void main(String[] args) {
            JFrame frame = new JFrame();
            frame.setVisible(true);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
            //设置窗体出现时的位置和初始大小
            frame.setBounds(500,250,300,300);
            //四个参数:窗体左上角的x坐标,窗体左上角的y坐标,width,height
        }
    }
    
    

    执行后:
    在这里插入图片描述

    设置窗体的标题

    有两种方法:

    package GUI;
    
    import javax.swing.*;
    
    public class TestGUI {
    
        public static void main(String[] args) {
            //第一种方法:构造JFrame时传的参数就是titile
            JFrame frame = new JFrame("第一种设置标题的方法");
            frame.setVisible(true);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setBounds(500,250,400,300);
        }
    }
    
    

    执行后:
    在这里插入图片描述

    package GUI;
    
    import javax.swing.*;
    
    public class TestGUI {
    
        public static void main(String[] args) {
            JFrame frame = new JFrame("第一种设置标题的方法");
            //第二种方法:
            frame.setTitle("第二种设置标题的方法");
            
            frame.setVisible(true);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setBounds(500,250,400,300);
        }
    }
    
    

    运行后:
    在这里插入图片描述

    添加按钮

    package GUI;
    
    import javax.swing.*;
    
    public class TestGUI {
    
        public static void main(String[] args) {
            JFrame frame = new JFrame("添加按钮");
    
            //1.创建一个按钮
            JButton button = new JButton("我是一个大按钮");
    
            //2.将按钮添加到窗体内
            frame.add(button);
    
            frame.setVisible(true);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setBounds(500,250,400,300);
        }
    }
    
    

    运行后:
    在这里插入图片描述
    一个屏幕都是按钮,真丑啊

    添加面板

    面板可以在创建多个,是对窗体进行区域分隔的
    面板是个无色透明的

    package GUI;
    
    import javax.swing.*;
    
    public class TestGUI {
    
        public static void main(String[] args) {
            JFrame frame = new JFrame("添加按钮");
            JButton button = new JButton("我是一个大按钮");
            
            //1.创建一个面板
            JPanel panel = new JPanel();
            //2.将面板添加到窗体内
            frame.add(panel);
            //3.将按钮添加到面板内
            panel.add(button);
    
            frame.setVisible(true);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setBounds(500,250,400,300);
        }
    }
    
    

    运行后:
    在这里插入图片描述
    JPanel和JFrame都有自身的管控组件排布的布局管理规则,JPanel是流式的,JFrame是边界式的
    所以才会两次显示不一样

    添加文本框

    package GUI;
    
    import javax.swing.*;
    
    public class TestGUI {
    
        public static void main(String[] args) {
            JFrame frame = new JFrame("添加按钮");
            JButton button = new JButton("我是一个大按钮");
            JPanel panel = new JPanel();
            
            //1.创建一个文本框
            JTextField text = new JTextField("亚索,你一路走好啊");
            panel.add(text);
    
            frame.add(panel);
            panel.add(button);
            frame.setVisible(true);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setBounds(500,250,400,300);
        }
    }
    
    

    运行后:
    在这里插入图片描述
    我还可以在窗体的文本框中,直接重新输入

    文本框的长度还可以设置:

    package GUI;
    
    import javax.swing.*;
    
    public class TestGUI {
    
        public static void main(String[] args) {
            JFrame frame = new JFrame("添加按钮");
            JButton button = new JButton("我是一个大按钮");
            JPanel panel = new JPanel();
           
            //参数内传数值,就是设置文本框的长度
            JTextField text = new JTextField(20);
            
            panel.add(text);
            frame.add(panel);
            panel.add(button);
            frame.setVisible(true);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setBounds(500,250,400,300);
        }
    }
    
    

    运行后:
    在这里插入图片描述

    添加密码框,添加标签

    package GUI;
    
    import javax.swing.*;
    
    public class TestGUI {
    
        public static void main(String[] args) {
            JFrame frame = new JFrame("登录");
    
            JButton button = new JButton("登录");
            JTextField text = new JTextField(20);
            JPanel panel = new JPanel();
    
            //创建一个密码框
            JPasswordField pass = new JPasswordField(20);
    
            //创建两个标签
            JLabel lable1 = new JLabel("账户:");
            JLabel lable2 = new JLabel("密码:");
    
            frame.add(panel);
            panel.add(lable1);
            panel.add(text);
            panel.add(lable2);
            panel.add(pass);
            panel.add(button);
    
            frame.setVisible(true);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setBounds(500,250,400,300);
        }
    }
    
    

    运行结果:
    在这里插入图片描述
    然后我通过鼠标,把窗体拉伸的好看一点:
    在这里插入图片描述

    设置不让窗体可以被鼠标拖拽大小

    加一句这个就行frame.setResizable(false);

    添加复选框

    package GUI;
    
    import javax.swing.*;
    
    public class TestGUI {
    
        public static void main(String[] args) {
            JFrame frame = new JFrame("登录");
    
            JButton button = new JButton("登录");
            JTextField text = new JTextField(20);
            JPanel panel = new JPanel();
            JPasswordField pass = new JPasswordField(20);
            JLabel lable1 = new JLabel("账户:");
            JLabel lable2 = new JLabel("密码:");
            
            //创建三个复选框
            JCheckBox box1 = new JCheckBox("抽烟");
            JCheckBox box2 = new JCheckBox("喝酒");
            JCheckBox box3 = new JCheckBox("烫头");
            
    
            frame.add(panel);
            panel.add(lable1);
            panel.add(text);
            panel.add(lable2);
            panel.add(pass);
            panel.add(button);
            panel.add(box1);
            panel.add(box2);
            panel.add(box3);
    
            frame.setVisible(true);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setBounds(500,250,300,300);
            frame.setResizable(false);
        }
    }
    
    

    运行后:
    在这里插入图片描述
    所谓复选框,就是三个按钮,我想选几个就几个
    比如,我三个都选
    在这里插入图片描述

    添加单选框

    package GUI;
    
    import javax.swing.*;
    
    public class TestGUI {
    
        public static void main(String[] args) {
            JFrame frame = new JFrame("登录");
    
            JButton button = new JButton("登录");
            JTextField text = new JTextField(20);
            JPanel panel = new JPanel();
            JPasswordField pass = new JPasswordField(20);
            JLabel lable1 = new JLabel("账户:");
            JLabel lable2 = new JLabel("密码:");
    
            //创建三个单选框
            JRadioButton r1 = new JRadioButton("男");
            JRadioButton r2 = new JRadioButton("女");
            JRadioButton r3 = new JRadioButton("不可描述");
            
    
            frame.add(panel);
            panel.add(lable1);
            panel.add(text);
            panel.add(lable2);
            panel.add(pass);
            panel.add(button);
            panel.add(r1);
            panel.add(r2);
            panel.add(r3);
    
            frame.setVisible(true);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setBounds(500,250,300,300);
            frame.setResizable(false);
        }
    }
    
    

    运行后:
    在这里插入图片描述
    不过有个小问题,现在这还不是单选按钮,因为这三个按钮没有关系,还不是单选;
    要将这三个单选框放到一个组里,才能成为单选

    package GUI;
    
    import javax.swing.*;
    
    public class TestGUI {
    
        public static void main(String[] args) {
            JFrame frame = new JFrame("登录");
    
            JButton button = new JButton("登录");
            JTextField text = new JTextField(20);
            JPanel panel = new JPanel();
            JPasswordField pass = new JPasswordField(20);
            JLabel lable1 = new JLabel("账户:");
            JLabel lable2 = new JLabel("密码:");
    
            //创建三个单选框
            JRadioButton r1 = new JRadioButton("男");
            JRadioButton r2 = new JRadioButton("女");
            JRadioButton r3 = new JRadioButton("不可描述");
            //这三个单选框放到一个组里
            ButtonGroup group = new ButtonGroup();//但是这个组本身不是组件
            group.add(r1);
            group.add(r2);
            group.add(r3);
    
            frame.add(panel);
            panel.add(lable1);
            panel.add(text);
            panel.add(lable2);
            panel.add(pass);
            panel.add(button);
            panel.add(r1);
            panel.add(r2);
            panel.add(r3);
    
            frame.setVisible(true);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setBounds(500,250,300,300);
            frame.setResizable(false);
        }
    }
    
    

    运行后,我选了一个按钮
    在这里插入图片描述

    添加文本域

    package GUI;
    
    import javax.swing.*;
    
    public class TestGUI {
    
        public static void main(String[] args) {
            JFrame frame = new JFrame("登录");
    
            JButton button = new JButton("登录");
            JTextField text = new JTextField(20);
            JPanel panel = new JPanel();
            JPasswordField pass = new JPasswordField(20);
            JLabel lable1 = new JLabel("账户:");
            JLabel lable2 = new JLabel("密码:");
            JRadioButton r1 = new JRadioButton("男");
            JRadioButton r2 = new JRadioButton("女");
            JRadioButton r3 = new JRadioButton("不可描述");
            ButtonGroup group = new ButtonGroup();
            group.add(r1);
            group.add(r2);
            group.add(r3);
    
            //创建文本域
            JTextArea area = new JTextArea(5,20);
            //参数:行数,列数
    
            frame.add(panel);
            panel.add(lable1);
            panel.add(text);
            panel.add(lable2);
            panel.add(pass);
            panel.add(button);
            panel.add(r1);
            panel.add(r2);
            panel.add(r3);
            panel.add(area);
    
            frame.setVisible(true);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setBounds(500,250,300,300);
            frame.setResizable(false);
        }
    }
    
    

    运行后:
    在这里插入图片描述
    但是它还存在一个小问题,随着我的输入,他会变大
    在这里插入图片描述
    我给它加个滚动条

    package GUI;
    
    import javax.swing.*;
    
    public class TestGUI {
    
        public static void main(String[] args) {
            JFrame frame = new JFrame("登录");
    
            JButton button = new JButton("登录");
            JTextField text = new JTextField(20);
            JPanel panel = new JPanel();
            JPasswordField pass = new JPasswordField(20);
            JLabel lable1 = new JLabel("账户:");
            JLabel lable2 = new JLabel("密码:");
            JRadioButton r1 = new JRadioButton("男");
            JRadioButton r2 = new JRadioButton("女");
            JRadioButton r3 = new JRadioButton("不可描述");
            ButtonGroup group = new ButtonGroup();
            group.add(r1);
            group.add(r2);
            group.add(r3);
    
            JTextArea area = new JTextArea(5,20);
            //滚动条
            JScrollPane pane = new JScrollPane(area);//是滚动条包着文本域
    
            frame.add(panel);
            panel.add(lable1);
            panel.add(text);
            panel.add(lable2);
            panel.add(pass);
            panel.add(button);
            panel.add(r1);
            panel.add(r2);
            panel.add(r3);
            panel.add(pane);//所以这里只添加滚动条即可
    
            frame.setVisible(true);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setBounds(500,250,300,300);
            frame.setResizable(false);
        }
    }
    
    

    运行后:
    在这里插入图片描述

    瞎吉儿输入后:
    在这里插入图片描述

    菜单条,菜单,带单项

    package GUI;
    
    import javax.swing.*;
    
    public class TestGUI {
    
        public static void main(String[] args) {
            JFrame frame = new JFrame("菜单条,菜单,菜单项");
            JPanel panel = new JPanel();
    
            //创建菜单条
            JMenuBar bar = new JMenuBar();
    
            //创建三个菜单
            JMenu menu1 = new JMenu("File");
            JMenu menu2 = new JMenu("Edit");
            JMenu menu3 = new JMenu("Navigation");
            bar.add(menu1);
            bar.add(menu2);
            bar.add(menu3);
            
            //创建若干个菜单项
            JMenuItem item1 = new JMenuItem("New");
            JMenuItem item2 = new JMenuItem("Open");
            menu1.add(item1);
            menu1.add(item2);
            JMenuItem item3 = new JMenuItem("Cut");
            JMenuItem item4 = new JMenuItem("Copy");
            menu2.add(item3);
            menu2.add(item4);
            JMenuItem item5 = new JMenuItem("Class...");
            menu3.add(item5);
    
            frame.add(panel);
            panel.add(bar);
    
    
    
    
            frame.setVisible(true);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setBounds(500,250,300,300);
            frame.setResizable(false);
        }
    }
    
    

    运行后:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    将菜单条,直接放置在JFrame上,有不同的表示效果:

    package GUI;
    
    import javax.swing.*;
    
    public class TestGUI {
    
        public static void main(String[] args) {
            JFrame frame = new JFrame("菜单条,菜单,菜单项");
    
            //创建菜单条
            JMenuBar bar = new JMenuBar();
            frame.setJMenuBar(bar);
    
            //创建三个菜单
            JMenu menu1 = new JMenu("File");
            JMenu menu2 = new JMenu("Edit");
            JMenu menu3 = new JMenu("Navigation");
            bar.add(menu1);
            bar.add(menu2);
            bar.add(menu3);
    
            //创建若干个菜单项
            JMenuItem item1 = new JMenuItem("New");
            JMenuItem item2 = new JMenuItem("Open");
            menu1.add(item1);
            menu1.add(item2);
            JMenuItem item3 = new JMenuItem("Cut");
            JMenuItem item4 = new JMenuItem("Copy");
            menu2.add(item3);
            menu2.add(item4);
            JMenuItem item5 = new JMenuItem("Class...");
            menu3.add(item5);
    
            frame.setVisible(true);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setBounds(500,250,300,300);
            frame.setResizable(false);
        }
    }
    
    

    运行后:
    在这里插入图片描述

    布局管理

    在这里插入图片描述

    展开全文
  • //设置窗体大小,位置。 JPanel jp1=new JPanel();//设置两个面板 JPanel jp2=new JPanel(); b1=new JButton("下一步"); b2=new JButton("路人甲");//按钮2和4,标签1和2显示成果 b3=new JButton("上一步"); b4=new ...

    如图:

     

     

    关键技术:事件监听,设置显示面板,重新刷新验证。

                setContentPane(jp2);//设置显示的新面板
                revalidate();//重新验证

    完整代码如下:

     import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    public class ceshi2 extends JFrame{
        JButton b1;
        JButton b2;
        JButton b3;
        JButton b4;
    public ceshi2() {
        setBounds(200, 150, 500, 300);//设置窗体大小,位置。
        JPanel jp1=new JPanel();//设置两个面板
        JPanel jp2=new JPanel();
        b1=new JButton("下一步");
        b2=new JButton("路人甲");//按钮2和4,标签1和2显示成果
        b3=new JButton("上一步");
        b4=new JButton("路人乙");
        JLabel l1=new JLabel("这是第一个面板");
        JLabel l2=new JLabel("这是第二个面板");
        b1.setBounds(20, 20, 100, 40);
        b2.setBounds(20, 120, 100, 40);
        b3.setBounds(20, 20, 100, 40);
        b4.setBounds(20, 120, 100, 40);
        l1.setBounds(100, 300, 200, 50);
        l2.setBounds(100, 300, 200, 50);
        jp1.add(b1);//添加到面板1中
        jp1.add(b2);
        jp1.add(l1);
        jp2.add(l2);//添加到面板2中
        jp2.add(b3);
        jp2.add(b4);
        add(jp1);//首先显示的是面板1
        b1.addActionListener(new ActionListener() {//添加监听
            
            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub            
                setContentPane(jp2);//设置显示的新面板
                revalidate();//重新验证
                
            }
        });
        b3.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub            
                setContentPane(jp1);
                revalidate();
            }
        });
        setVisible(true);
        setLayout(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
    public static void main(String[] args) {
        new ceshi2();
    }
    }

     

    展开全文
  • objectARX创建 PaletteSet 停靠面板示例图文By edata ,转载注明出处http://www.cnblogs.com/edata部分代码参考张帆《AutoCAD ObjectARX(VC)开发基础与实例教程》以下是源码部分//001.修改msxml为msxml6//- Import ...
  • 窗体一: package gui.awt; import java.awt.Button; import java.awt.FlowLayout; import java.awt.Frame; public class Test1 { public static void main(String[]args){ Frame f = new Frame("我的...
  • C#如何通过一个按钮实现窗体界面的中英文切换?2020 - 8 - 17 TAG :一、窗体的国际化解决方案新建一个WinForm解决方案后,选择主窗体,右击查看属性,找到Localizable属性,将其置为True,然后找到Language属性,...
  • Java学习 - GUI设计中如何在一个窗口下进行多个面板切换一种实现方式是,设定JFrame实例的contentPane的布局为CardLayout,然后向contentPane中加入不同的JPanel.结构框架如图注意要将CardLayout定义成JFrame的一个...
  • 第一个button点击之后,会把第一个窗口显示在panel上,其他button对应的窗口将被隐藏,不显示,这样就实现了5个按钮对应页面的切换创建一个类: private void Control_Add(Form form) { panel_background...
  • 最新.课件 最新....课件 准备表查询报表 制作数据查询窗体 制作成绩维护窗体 建应用系统的切换面板 结束放映 用Access建立学生成绩管理系统 准备表查询报表等数据 使用设计器创建表 使用向导创建表 通过输入
  • 首先我们先创建几个窗体,其中一个窗体作为mdi窗体窗体有个属性叫IsMdiContair ,并设为true,在mdi窗体加一个panel控件 代码如下:  private void toolStripLabel2_Click(object sender, EventArgs e)  {  ...
  • 知识点:控件排列和对齐的方法、创建MDI窗体的方法、高级控件(工具条ToolStrip、状态条StatusStrip、图片框PictureBox、图片列表ImageList、定时器Timer)的使用、数据验证代码的编写、窗体间数据传递的方法 ...
  • ACCESS 查询和窗体实验报告

    千次阅读 2021-01-14 13:36:29
    ACCESS 查询和窗体实验报告实验报告课程名称数据库技术与应用实验项目名称ACCESS查询和窗体实验班级与班级代码11国金金融2班1125050521实验室名称(或课室)SS1-204专业国际金融任课教师司徒抗卫学号:11250505219姓名...
  • JAVA对于单窗口和多个JPanel面板切换

    万次阅读 多人点赞 2018-10-09 17:44:42
    但是这样写出现了一个问题,就是打开其他窗口界面会导致之前的部分界面出现无法关闭或者隐藏的情况,因为本来的设想是在新窗口打开后,对之前旧窗口隐藏,但是还是在某些界面切换时出现无法将旧界面全部隐藏,改了也...
  • 前言wxPython是基于Python的跨平台GUI扩展库,对wxWidgets( C++ 编写)封装实现。...本文主要介绍wxPython的布局管理应用以及在此基础上实现的页面切换功能。最小架构实现wxPython程序由组件wx.Ap...
  • 前言 图形用户界面简称GUI,通过GUI用户可以更好地与计算机进行交互。从JDK1.2版本后Java就引入了...第一步:创建图形界面中所要用到的组件,进行合理布局; 第二步:定义界面上的组件对用户交互事件的响应和对事件
  • 10. Windows窗体

    2021-04-14 22:38:55
    Windows窗体 1 From窗体 Form窗体也成称为窗口,是.NET框架的智能客户端技术,使用窗体可以显示信息、请求用户输入以及通过网络与远程计算机通讯。 1.1 Form窗体的概念 在Windows中,窗体是向用户显示信息的可视图...
  • 在Java的GUI设计中,若是要想实如今一个窗体中多个界面而且能在这些界面内能够随意切换,那选项卡面板绝对是最佳的选择,下面将具体介绍JTabbedPane的使用方法java使用方法介绍1. 首先,须要导入JTabbedPane类,即在...
  • 准备表查询报表 制作数据查询窗体 制作成绩维护窗体 建应用系统切换面板 返回主页 退出放映 ;使用自动创建窗体向导创建数据查询窗体 ;在设计视图中修改窗体;制作成绩维护窗体;在删除记录命令按钮的快捷菜单中单击...
  • 创建用户界面时,把控件从工具箱拖放到窗体上,把它们放在应用程序运行时需要的地方,再双击该空间,添加空间的处理程序。 1.2 WINDFORM windform是windows Forms的缩写,是一种只能客户端技术 用于创建传统的基于...
  • 示例Demo2_1用PyQt5的一些类创建了一个简单的GUI应用程序,窗体窗体上的标签对象的创建和属性设置都完全由代码完成。显然这种纯代码方式构造UI的方式是比较麻烦的,特别是在窗体上组件比较多、层次比较复杂的时候...
  • JLayeredPanel 作为Java层次面板创建多编辑窗口与实现某些特殊显示层次效果的最好方法当前已经内置支持JLayeredPanel的组件包括JFrame,JDialog,JDesktopPanel本身就是个JLayeredPanel对象,JLayeredPanel中可以...
  • //在Java的GUI设计中,如果要想实现在一个窗体中多个界面并且能在这些界面内可以随意切换,那选项卡面板绝对是最佳的选择,下面将具体介绍JTabbedPane的使用方法 //pane是Java中的一个控件,是不具备包含其他控件的...
  • JPanel 面板 是一种中间层容器,它能容纳组件并将组件组合在一起,但它本身必须添加到其他容器中使用。 JFrame JFrame 是 Swing 组件的顶层容器,该类继承了 AWT 的 Frame 类,支持 Swing 体系结构的
  • 用 Access建立学生成绩管理系统 忘学图统22口准备表查询报表 届开Q就X+ 赚象圈使用说计建表 口制作数据查询窗体 日表使导建表 型通输)入数创表 口制作成绩维护窗体窗体回文科总分 口建应用系统的切换面板 页 口...
  • 10.1 Windows窗体编程基础 10.1.1 WinForms概述 #region Windows 窗体设计器生成的代码 /// <summary> /// 设计器支持所需的方法 - 不要 /// 使用代码编辑器修改此方法的内容。 ...
  • access 中菜单的生成和删除 分享出来的一个案例,希望大家可以学会
  • 在网上寻找了很久一直没有找到关于wxpython的界面切换的确切的代码,也有些代码写的太高深了看不懂,经过搜索知道了可以利用wxpython的布局sizer,完成点击按钮切换界面,于是自己便试着去写了一下最后粗糙的实现了...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,758
精华内容 1,903
关键字:

创建窗体切换面板