精华内容
参与话题
问答
  • 使用Java编写一个窗体

    千次阅读 2018-08-09 09:55:27
    import java.awt.Color; import java.awt.Frame; public class FirstFrame extends Frame { public static void main(String[] args) { FirstFrame fr=new FirstFrame("First Cont...
    package com.awt.frame;
    
    import java.awt.Color;
    import java.awt.Frame;
    
    public class FirstFrame extends Frame {
    
    	public static void main(String[] args) {
    		
    		FirstFrame fr=new FirstFrame("First Contianer!");//构造方法
    		fr.setSize(240,240); 				//设置Frame的大小,默认为(0,0)
    		fr.setBackground(Color.yellow); 	//设置Frame的背景颜色为黄色,默认值为白色
    		fr.setVisible(true);  				//设置Frame为可见,默认为不可见
    		
    	
    	}
    	public FirstFrame(String str) {
    		super(str);	//调用父类构造方法
    	}
    
    }
    

    运行效果

     

    展开全文
  • java 窗体程序

    千次阅读 2017-01-20 17:50:50
    实现功能: 窗体居中,多选框,下拉框,按钮,点击按钮关闭 import java.awt.Button; import java.awt.Checkbox; import java.awt.Choice; import java.awt.Dimension; import java.awt.Frame; import java.awt....


    实现功能:   窗体居中,多选框,下拉框,按钮,点击按钮关闭


    import java.awt.Button;
    import java.awt.Checkbox;
    import java.awt.Choice;
    import java.awt.Dimension;
    import java.awt.Frame;
    import java.awt.GridLayout;
    import java.awt.Label;
    import java.awt.List;
    import java.awt.Toolkit;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    public class test {
    	public static void main(String[] args) {
    		
    		Frame frame =new Frame("My first windows");  
    		int windowWidth = frame.getWidth(); //获得窗口宽
    		int windowHeight = frame.getHeight(); //获得窗口高
    		Toolkit kit = Toolkit.getDefaultToolkit(); //定义工具包
    		Dimension screenSize = kit.getScreenSize(); //获取屏幕的尺寸
    		int screenWidth = screenSize.width; //获取屏幕的宽
    		int screenHeight = screenSize.height; //获取屏幕的高
    		frame.setLocation(screenWidth/2-windowWidth/2, screenHeight/2-windowHeight/2);//设置窗口居中显示 
    
         
            frame.setLayout(new GridLayout(7,1));  
            //lable组件  
            frame.add(new Label("复选 (可复选):"));  
            //checkbox组件  
            frame.add(new Checkbox("被耍了"));   
            frame.add(new Checkbox("并没有")); 
            //Choice 组件  
            Choice c=new Choice();  
            c.add("Red");  
            c.add("Green");  
            c.add("Blue");  
            frame.add(c);  
            
            //List组件  
            List l=new List(3,false);  
            l.add("一年级");  
            l.add("二年级");  
            l.add("三年级");  
            frame.add(l); 
            
            //Button组件   
            Button button= new Button("关闭按钮");
            button.addActionListener(new ActionListener() {
            	@Override
            	public void actionPerformed(ActionEvent e) {
            	System.exit(0);//退出程序
            	}
            	});
            frame.add(button);  
            frame.pack();//调整窗口以容纳所有的组件  
            frame.setVisible(true);//显示窗口    
    	}
    }
    


    打jar包的教程:http://blog.csdn.net/qq_27292113/article/details/54632963

    将改程序打成jar 文件双击运行即可。

    展开全文
  • java swing开发窗体程序开发(一)GUI编程

    万次阅读 多人点赞 2019-04-05 21:37:27
    Java SWing就是java提供的一个类库专门用于开发...java的好处就是通用性强,跨平台,这个java窗体程序做好之后,哪都可以用。然而C#的winform只能运行在有.net框架上 的平台,然而.net支持最好的,也就只有windows...

    Java SWing就是java提供的一个类库专门用于开发窗体程序的,相对于C#的winform,java swing的开发要比C#更加麻烦,他不像C#拥有可视化的界面编辑工具
    而是需要像QT一样纯代码式GUI编程。java的好处就是通用性强,跨平台,这个java窗体程序做好之后,哪都可以用。然而C#的winform只能运行在有.net框架上
    的平台,然而.net支持最好的,也就只有windows了。C#的开发效率更高

    以下讲解Java swing的开发

    (一)第一个java swing程序

        public static void main(String[] args)
        {
            //java Swing学习
            //生成窗口
            JFrame windows1=new JFrame("窗口1");
            JFrame windows2=new JFrame("窗口2");
            Container container1=windows1.getContentPane();//获得这个窗口的内容面板
            container1.setBackground(Color.blue);//设置背景颜色
            windows1.setBounds(60,100,188,108);//设置位置大小
            windows2.setBounds(260,100,188,108);
            windows1.setVisible(true);//可视性设置
            windows1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);//设置按x后的操作.[这个只是关闭那个窗口]
            windows2.setVisible(true);
            windows2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置按x后的操作.[这个是关闭整个程序,将会关闭所有窗口]
        }
    

    需要注意的是,在设置位置和大小时,即setBounds,一共有4个参数,前面两个是坐标信息,即x,y坐标。对于屏幕坐标系,这个坐标原点在屏幕左上角,以下为y正轴,右为x正轴
    还有就是DISPOSE_ON_CLOSE EXIT_ON_CLOSE的区别。

    运行的效果如下
    在这里插入图片描述

    (二)带有菜单栏,菜单条,和子菜单的窗体程序

    首先要知道几个常见类和函数
    JMenuBar:代表菜单条,他需要被设置给JFrame窗体中
    JMenu:代表菜单,他需要被放在菜单条中
    JMenuItem:代表菜单项,续杯放在菜单中。
    Icon:代表图标,使用new ImgeIcon(“文件路径”);//使用绝对路径,这里由于是linux所以没有盘符
    常用函数
    JFrame:
    setJMenuBar(JMenuBar menuBar);//将菜单条设置给窗口
    JMenu:
    add(JMenuItem);//在菜单中添加菜单项
    add(JMenu);//在菜单中添加子菜单
    addSoearator();//添加分割线
    JMeunItem:
    其的双参构造方法:第一个是菜单项名字,第二个是菜单项图标

        /**
         * 创建一个带菜单条,菜单项,子菜单的窗口
         */
        public class MainForm extends JFrame {
            JMenuBar menuBar;//菜单条
            JMenu menu1,menu2,submenu;//菜单
            JMenuItem item1,item2;//菜单项
        
            /**
             * 创建这个窗口的构造函数
             * @param title 窗口名字
             * @param posX X坐标
             * @param posY Y坐标
             * @param width 宽
             * @param height 高
             */
            public MainForm(String title,int posX,int posY,int width,int height)
            {
                init(title);
                
                //setIconImage();//设置窗体图标
                setLocation(posX,posY);//该函数继承至JFrame用于设置位置
                setSize(width,height);//该函数继承至JFrame用于设置大小
                setVisible(true);//同上,设置可视性
                setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);//同上,设置关闭时的操作
            }
        
            private void init(String title)
            {
                setTitle(title);//继承至JFrame,设置窗口标题
                menuBar =new JMenuBar();//实例化菜单条
                menu1=new JMenu("菜单1");//实例化菜单
                menu2=new JMenu("菜单2");//同上
                submenu=new JMenu("子菜单1");//同上
                item1=new JMenuItem("菜单项1",new ImageIcon("/home/zuikaku/图片/1.png"));//实例化菜单项并设置图标
                item2=new JMenuItem("菜单项2",new ImageIcon("/home/zuikaku/图片/1.png"));//实例化菜单项并设置图标
                item1.setAccelerator(KeyStroke.getKeyStroke('A'));//设置快捷键
                item2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,KeyEvent.CTRL_MASK));//设置组合快捷键
                menu1.add(item1);//将菜单项添加入菜单中
                menu1.addSeparator();
                menu1.add(item2);//同上
                menu1.add(submenu);//将菜单加入菜单中,即作为其子菜单
                submenu.add(new JMenuItem("子菜单项1",new ImageIcon("/home/zuikaku/图片/1.png")));//子菜单中添加菜单项
                submenu.add(new JMenuItem("子菜单项2",new ImageIcon("/home/zuikaku/图片/1.png")));//子菜单中添加菜单项
                menuBar.add(menu1);//菜单条中添加菜单
                menuBar.add(menu2);//同上
                setJMenuBar(menuBar);//将该菜单条设置给这个窗口
            }
        
        }
    

    实例化这个MainForm的效果就是
    在这里插入图片描述

    (三)Java Swing中的常用组件

    组件的作用就是与人交互,他们就是用来显示提供给用户的信息或捕捉。这些组件都继承至JComponent
    常用的有
    JTextField:单行文本输入
    JTextArea:多行文本输入
    JButton:按钮
    JLabel:标签,用于显示提示信息
    JCheckBox:复选框
    JRadioButton:单选框-需要归组后才能实现单选
    JComboBox:下拉列表
    JPasswordField:密码框
    需要注意的是,这些组件new出来后,是不会显示的,要将其添加add到这个窗体中,才会显示

        /**
         * 展示java swing中的常见组件
         */
        public class UserInputForm extends JFrame{
            JLabel usernameLabel;
            JLabel passwordLabel;
            JLabel personalInfoLabel;
            JTextField usernameInput;
            JPasswordField passwordInput;
            JTextArea personalInputArea;
            JCheckBox checkBox1;
            JCheckBox checkBox2;
            JRadioButton men;
            JRadioButton women;
            JComboBox<String> countryComboBox;
            ButtonGroup buttonGroup;//用于单选框的归组
            JButton submitBtn;
            public UserInputForm(String title,int posX,int posY,int width,int height)
            {
                init();
                setTitle(title);
                setLocation(posX,posY);
                setSize(width,height);
                setVisible(true);
        
                setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            }
            private void init()
            {
                setLayout(new FlowLayout());//设置布局
                usernameLabel=new JLabel("用户名");
                passwordLabel=new JLabel("密码");
                personalInfoLabel=new JLabel("个人信息");
                usernameInput=new JTextField();
                passwordInput=new JPasswordField();
                personalInputArea=new JTextArea();
                checkBox1=new JCheckBox("哈哈");
                checkBox2=new JCheckBox("嘻嘻");
                men=new JRadioButton("男");
                women=new JRadioButton("女");
                buttonGroup=new ButtonGroup();
                buttonGroup.add(men);
                buttonGroup.add(women);
                countryComboBox=new JComboBox<String>();
                countryComboBox.addItem("下拉选项1");
                countryComboBox.addItem("下拉选项2");
                submitBtn=new JButton("提交");
                //将这些组件加入到这个窗口中-才可以显示
                add(usernameLabel);
                add(passwordLabel);
                add(personalInfoLabel);
                add(usernameInput);
                add(passwordInput);
                add(personalInputArea);
                add(checkBox1);
                add(checkBox2);
                add(men);
                add(women);
                add(countryComboBox);
                add(submitBtn);
            }
        }
    

    效果如下
    在这里插入图片描述

    (四)常见容器(面板)【中间层容器】

    刚刚是将所有的组件添加到继承至JFrame的类中,JFrame叫做底层容器,然而在实际开发和为了更好的使用【例如实现同一个窗口切换选项卡有不同的面板】
    这些组件并不是直接添加在底层容器。而是添加到中间层容器。当然,这个中间层容器也必须添加到底层容器JFrame中才会启作用。否则显示不出来
    即必须有一个类继承至JFrame,且这个类将面板或是布局,add进去。然后实例化这个继承至JFrame的类,才看的到。
    1:JPanel面板:常用JPanel作为一个面板,最普通的面板,向该面板中添加组件。默认布局是FlowLayout
    2:JTabbedPane可切换选项卡面板:特点,向该面板中添加组件时,会可以为这个组件添加选项卡。即通过选项卡可以切换不同的组件(也可以是子面板JPanel),相当于,第一个选项卡点击
    显示第一个界面,第二个选项卡点击,不开新窗口,就在该窗口上显示第二个界面。使用add(String text,Component c);//这个函数来指定选项卡名字和组件之间的对应关系
    选项卡的位置在构造JTabbedPane对象时可以指定,其构造函数参数为int类型,实际是一个静态常量,枚举表示的是选项卡的位置JTabbedPane.Bottom/Top/LEFT/RIGHT
    3:JSrollPane滚动面板:其只可以添加一个组件,通常和JTextArea配合使用,作为文本输入栏的滚动条
    JScrollPane scroll=new JScrollPanel(new JTextArea());

    4:JSplitPane拆分面板:即面板分为两部分,可以按左右分割,左右各一个,也可以按上下分割,上下各一个
    构造方法
    JSplitPane splitPanel=new JSplitpanel(int a,Component b,Conponent c);
    其中a是个静态常量,代表是水平分割还是垂直,分别是JSplitpane.HORIZONTAL_SPLIT和JSplitpane.VERTICAL_SPLIT

    5:JLayeredPane分层面板:用于处理组件重叠问题
    需要注意的是,这个层并不是可以自己定义,和Unity的OrderInLayer和SortLayer不同。JavaSwing中总共就定义了5层,从低到高,分别是
    DEFAULT_LAYER,PALETTE_LAYER,MODAL_LAYER,POPUP_LAYER,DRAG_LAYER
    同一位置,高层的会覆盖显示底层的。对于同层的,后来的会覆盖新来的
    //使用add(Component, layer)可以添加组件并设置值
    setLayer(Component c,int layer));//可以重新设置layer
    getLayer(Component c);//可以获得一个组件的Layer

    (五)设置布局

    即组件在面板上的布局
    容器/面板通过调用setLayout(布局对象)来设置布局
    1:FlowLayout布局:表示默认居中对齐,使用该布局方式的容器,用add函数向里面加组件,就会根据先后顺序从左向右排列,一行排完后就提行
    使用该布局方式,组件自身的setSize将不会有用,要改变大小只能通过setPreferredSize(DimensionpreferredSize)
    button.setPreferredSize(new Dimension(20,20)))

    该布局方式的对齐方式可以更改,FlowLayout对象调用setAlignment(int align);//使用该函数修改对齐方式,传入的参数是一个静态常量,FlowLayout.LEFT,FlowLayout.CENTER
    FlowLayout.RIGHT
    2:BorderLayout布局:表示将这个容器划分为5个部分,东西南北中【上下左右中】
    中间的区域最大,所加入的组件都应该指明其属于哪一个区域。东南西北中用静态常量表示的:分别是EAST.WEST,SOUTH,NORTH。
    //使用方法
    容器对象.add(组件对象,BorderLayout.East)

    需要注意的是,使用这种布局方式,组件不能超过5个,同一个区域加入过多次组件以最后一次为准。如果一个区域实在需要多个组件
    那么就用嵌套的方式,即加个面板进去,再这个面板里面再加组件
    3:CardLayout布局:表示其可以添加多个组件,但只能显示一个。这些组件层叠的放在一起,只有最前面可以显示。
    顺序并不是栈,而是队列,即第一个添加进去的组件,显示在最前面,后面的一次往后排。且显示出来的组件将会占据该容器的所有空间
    使用该种布局的容器在添加组件时
    add(String s,Component c)
    s只是一个代号,方便以后显示这个组件时找到
    cardlayout对象.show(容器对象,代号s)

    其实也有快捷方式,如果知道顺序,但未知代号,或者是没有设置代号,可以通过
    caradLayout对象.frist(容器对象)的方式,还有last(),next(),previous()的方式
    4:GridLayout布局:即格子布局,将容器划分为若干行和若干列,在小格子添加组件
    需要注意的是:这些小格子的大小不能改,所有格子强制大小相同,且排列顺序是从左到右,一行排完后再提行
    5:null布局:表示空布局
    使用时 容器对象.setLayout(null)即可
    这种模式下,不限制组件的个数,每个组件都可以设置其自己的大小和位置location。当然组件可以通过setBounds()函数来设置位置和宽高。
    通常在容器add©//c代表一个组件。然后c调用自己setBounds来设置
    6:Box布局:盒子布局
    盒子布局一共有两种,1是水平盒子Box.creatHorizontalBox()。2是垂直盒子Box.creatVerticalBox().
    其中水平盒子中添加的组件都是水平排列,垂直盒子中添加的组件都是垂直排列的
    想在水平或垂直的组件间添加间距
    可以在盒子中Box对象.add(Box.creatHorizontalStrut(10));//创建间距为10的水平间隔,Box.creatVerticalStrut(10)则代表垂直方向上的间隔
    以下是一个演示案例

        /**
         * 格子布局演示
         */
        public class GridPanel extends JPanel {
            public GridPanel()
            {
                GridLayout gridLayout=new GridLayout(12,12);//生成格子布局对象。构造时设置格子
                setLayout(gridLayout);//为该panel设置布局
                JLabel [][]labels=new JLabel[12][12];//格子中的组件
                for(int i=0;i<=11;i++)
                {
                    for(int j=0;j<=11;j++)
                    {
                        labels[i][j]=new JLabel();
                        if((i+j)%2==0)
                            labels[i][j].setText("A");
                        else
                            labels[i][j].setText("B");
                        add(labels[i][j]);//将该组件加入到面板中
                    }
                }
            }
        }
        
        /**
         * 自定义的空布局面板
         */
        public class NullPanel extends JPanel {
            JButton button;
            JTextField textField;
            public NullPanel(){
                setLayout(null);//设置布局类型
                button=new JButton("确定");//实例化组件
                textField=new JTextField();//实例化组件
                //将组件加入该面板
                add(button);
                add(textField);
                //设置他们大小和位置
                textField.setBounds(100,30,90,30);
                button.setBounds(190,30,66,30);
            }
        }
        /**
         * 用于演示的主面板-其自身也使用了BorderLayout布局
         */
        public class MixedForm extends JFrame {
            private GridPanel gridPanel;//自定义的格子面板对象
            private NullPanel nullPanel;//自定义的空布局面板对象
            private JTabbedPane tabbedPane;//选项卡面板
            public MixedForm()
            {
                gridPanel=new GridPanel();//实例化格子面板对象
                nullPanel=new NullPanel();//实例化空布局面板对象
                tabbedPane=new JTabbedPane();//实例化选项卡面板
                //将两个自定义的面板加入到选项卡面板下,通过选项卡可进行切换
                tabbedPane.add("格子布局面板",gridPanel);
                tabbedPane.add("空布局面板",nullPanel);
                //设置这个MixedForm的布局模式为BorderLayout
                setLayout(new BorderLayout());
                //将这个选项卡面板添加入该MixedForm的中区域
                add(tabbedPane,BorderLayout.CENTER);
                //随便填充几个,将东南西北填充完
                add(new JButton("东"),BorderLayout.EAST);
                add(new JButton("南"),BorderLayout.SOUTH);
                add(new JButton("西"),BorderLayout.WEST);
                add(new JButton("北"),BorderLayout.NORTH);
                //设置MixedForm的相关属性
                setBounds(10,10,570,390);
                setVisible(true);
                setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                //validate();//验证组件,可以有
            }
        }
        //启动类
        public class Main  {
            public static void main(String[] args)
            {
                MixedForm form=new MixedForm();
            }
        }
    

    注意在设置很多布局之后调用一次
    void validate()验证此容器及其所有子组件。函数,更新验证。【可以有】
    效果如下图
    在这里插入图片描述
    在这里插入图片描述

    盒子布局的展示
    代码如下

        public class UserInputPanel extends JFrame {
            private Box userInputBox;//用户输入部分的盒子,主要包含了用户名和密码,垂直排列
            private Box usernameBox;//用户名盒子,包含两个部分,一个label一个TextFiled,水平排列
            private Box passwordBox;//密码盒子,包含两个部分,一个label一个passwordField,水平排列
            private Box buttonBox;//按钮盒子,包含登录和忘记密码两个按钮,水平排列
            private JLabel userNameLabel;//
            private JLabel passwordLabel;//两个label组件提示用户
            private JTextField userNameInput;//用户名输入框
            private JPasswordField passwordInput;//密码输入框
            private JButton loginBtn;//登录按钮
            private JButton forgetPasswordBtn;//忘记密码按钮
            public UserInputPanel()
            {
        
                //实例化所有的对象
                userNameLabel=new JLabel("用户名");
                passwordLabel=new JLabel("密码");
                userNameInput=new JTextField();
                passwordInput=new JPasswordField();
                loginBtn=new JButton("登录");
                forgetPasswordBtn=new JButton("忘记密码");
                userInputBox=Box.createVerticalBox();//内部组件,垂直排列
                buttonBox=Box.createHorizontalBox();//内部组件,水平排列
                usernameBox=Box.createHorizontalBox();//内部组件,水平排列
                passwordBox=Box.createHorizontalBox();//内部组件,水平排列
                //将用户名相关内容加入用户名盒子
                usernameBox.add(userNameLabel);
                usernameBox.add(Box.createHorizontalStrut(10));//输入框与label的横向间隔
                usernameBox.add(userNameInput);
                //将密码相关内容加入密码盒子
                passwordBox.add(passwordLabel);
                passwordBox.add(Box.createHorizontalStrut(10));//输入框和label的横向间距
                passwordBox.add(passwordInput);
                //将用户名盒子和密码盒子加入用户输入userInputBox盒子
                userInputBox.add(usernameBox);
                userInputBox.add(Box.createVerticalStrut(10));//两行之间的间距
                userInputBox.add(passwordBox);
                //将两个按钮加入到按钮盒子
                buttonBox.add(Box.createHorizontalStrut(20));//第一个按钮和左边界的距离
                buttonBox.add(loginBtn);
                buttonBox.add(Box.createHorizontalStrut(10));//两个按钮之间的间距
                buttonBox.add(forgetPasswordBtn);
                //这个面板为空布局
                //设置这两个大盒子userInputBox和buttonBox的位置
                setLayout(null);
                setBounds(50,50,500,400);//该窗口本身的位置和大小
                //加入这两个大Box
                add(userInputBox);
                add(buttonBox);
                //设置这两个大Box的位置和大小
                userInputBox.setBounds(20,20,400,100);
                buttonBox.setBounds(20,200,400,100);
                setVisible(true);
                setDefaultCloseOperation(DISPOSE_ON_CLOSE);
                validate();
            }
        }
    

    执行的效果如下
    在这里插入图片描述
    就此,界面的相关内容介绍的差不多了。下面介绍最重要的"事件"
    可以关注我的博客,观看后续学习记录
    下一节:java swing 窗体程序开发(二)事件(Action,Item,Document)
    https://blog.csdn.net/tanyu159/article/details/89082367

    展开全文
  • Java 自定义窗体(标题栏、窗体背景)

    万次阅读 热门讨论 2014-06-06 23:30:20
    转自:http://hi.baidu.com/chengmaoning/item/b8e3b779ceb89d4a0e0a079c

    转自:http://hi.baidu.com/chengmaoning/item/b8e3b779ceb89d4a0e0a079c


    最近在书上看到这篇文章,觉得挺有意思。与大家分享一下,具体可以参见明日科技出版的《Java经典编程300例》。

    默认情况下,我们用java设计的界面窗体是这样的:

     


    默认的标题栏、最大化、最小化、关闭按钮、窗体边框。

    如何自定义窗体达到如下效果呢?

     


    大致说下代码要点:

    1. 设置窗体的Undecorated属性为true,阻止窗体采用本机系统修饰,这样窗体就没有标题栏和边框了。

    2. 设计背景面板类。BackgroundPanel extends JPanel。

    3. 窗体面板添加标题栏面板,位置在上方。

    4. 标题栏面板添加背景面板显示标题栏图片、标题栏面板添加面板用于放置最大化、最小化、关闭按钮。

    5. 窗体面板添加背景面板在中间。contentPane.add(mianPanel,BorderLayout.Center);

    6. 添加按钮响应、添加标题栏拖动代码。

     

    代码:

    首先是带背景图片面板类:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    package cn.chengmaoning.customframe;      
                  
    import java.awt.Graphics;      
    import java.awt.Image;      
                  
    import javax.swing.JPanel;      
                  
    public class BackgroundPanel extends JPanel {      
                  
        /**      
         *       
         */
        private static final long serialVersionUID = -898997756345637309L;      
        private Image image;      
                  
        /**      
         * Constructor      
         */
        public BackgroundPanel() {      
            super();      
            setOpaque(false);      
            setLayout(null);      
        }      
                  
        /**      
         * @param image      
         *            要设置的 image      
         */
        public void setImage(Image image) {      
            this.image = image;      
        }      
                  
        @Override
        protected void paintComponent(Graphics g) {      
            if (image != null) {      
                int width = getWidth();// 获取组件大小      
                int height = getHeight();      
                g.drawImage(image, 00, width, height, this);// 绘制图片与组件大小相同      
            }      
            super.paintComponent(g);// 执行超类方法      
        }      
                      
    }

    其次再是主类:

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    package cn.chengmaoning.customframe;     
                
    import java.awt.BorderLayout;     
    import java.awt.Dimension;     
    import java.awt.EventQueue;     
    import java.awt.FlowLayout;     
    import java.awt.GridLayout;     
    import java.awt.Image;     
    import java.awt.Point;     
    import java.awt.event.ActionEvent;     
    import java.awt.event.ActionListener;     
    import java.awt.event.ItemEvent;     
    import java.awt.event.ItemListener;     
    import java.awt.event.MouseAdapter;     
    import java.awt.event.MouseEvent;     
    import java.awt.event.MouseMotionAdapter;     
                
    import javax.jws.Oneway;     
    import javax.swing.ImageIcon;     
    import javax.swing.JButton;     
    import javax.swing.JFrame;     
    import javax.swing.JPanel;     
    import javax.swing.JToggleButton;     
                
    public class ControlFormStatus extends JFrame {     
                
        /**     
         *      
         */
        private static final long serialVersionUID = -2214759764324605473L;     
        private JPanel contentPane;     
        private Point pressedPoint;     
                    
        /**     
         * @param args     
         */
        public static void main(String[] args) {     
            // TODO 自动生成的方法存根     
            EventQueue.invokeLater(new Runnable() {     
                            
                @Override
                public void run() {     
                    // TODO 自动生成的方法存根     
                    try {     
                        ControlFormStatus frame = new ControlFormStatus();     
                        frame.setVisible(true);     
                    catch (Exception e) {     
                        // TODO: handle exception     
                        e.printStackTrace();     
                    }     
                }     
            });     
        }     
                    
        /**     
         * Constructor     
         */
        public ControlFormStatus(){     
            setUndecorated(true);     
            setDefaultCloseOperation(EXIT_ON_CLOSE);     
            setBounds(100100450300);     
            contentPane = new JPanel();     
            contentPane.setBorder(null);     
            contentPane.setLayout(new BorderLayout(00));     
            setContentPane(contentPane);     
                        
            BackgroundPanel topPanel = new BackgroundPanel();     
            topPanel.addMouseMotionListener(new MouseMotionAdapter() {     
                @Override
                public void mouseDragged(MouseEvent e){     
                    do_topPanel_mouseDragged(e);     
                }     
            });     
            topPanel.addMouseListener(new MouseAdapter() {     
                @Override
                public void mousePressed(MouseEvent e) {     
                    // TODO 自动生成的方法存根     
                    do_topPanel_mousePressed(e);     
                }     
            });     
            Image centerImage = new ImageIcon(getClass().getResource("frameTop.png")).getImage();     
            Dimension dimension = new Dimension(centerImage.getWidth(this), centerImage.getHeight(this));     
            topPanel.setPreferredSize(dimension);     
            topPanel.setImage(centerImage);     
                        
            contentPane.add(topPanel,BorderLayout.NORTH);     
            topPanel.setLayout(new FlowLayout(FlowLayout.RIGHT, 55));     
                        
            JPanel panel = new JPanel();     
            panel.setPreferredSize(new Dimension(6022));     
            panel.setOpaque(false);     
            topPanel.add(panel);     
            panel.setLayout(new GridLayout(1000));     
                        
            JButton button = new JButton("");     
            button.setRolloverIcon(new ImageIcon(ControlFormStatus.class.getResource("minBH.jpg")));     
            button.addActionListener(new ActionListener() {     
                            
                @Override
                public void actionPerformed(ActionEvent e) {     
                    // TODO 自动生成的方法存根     
                    do_button_actionPerformed(e);     
                }     
            });     
            button.setFocusPainted(false);     
            button.setBorderPainted(false);     
            button.setContentAreaFilled(false);     
            button.setIcon(new ImageIcon(ControlFormStatus.class.getResource("minB.jpg")));     
            panel.add(button);     
                        
            JToggleButton button_1 = new JToggleButton("");     
            button_1.addItemListener(new ItemListener() {     
                            
                @Override
                public void itemStateChanged(ItemEvent e) {     
                    // TODO 自动生成的方法存根     
                    do_button_1_itemStateChanged(e);     
                }     
            });     
            button_1.setRolloverIcon(new ImageIcon(ControlFormStatus.class.getResource("maxBH.jpg")));     
            button_1.setRolloverSelectedIcon(new ImageIcon(ControlFormStatus.class.getResource("maxBH.jpg")));     
            button_1.setIcon(new ImageIcon(getClass().getResource("maxB.jpg")));     
            button_1.setContentAreaFilled(false);     
            button_1.setBorderPainted(false);     
            button_1.setFocusPainted(false);     
            panel.add(button_1);     
                        
            JButton button_2 = new JButton("");     
            button_2.addActionListener(new ActionListener() {     
                            
                @Override
                public void actionPerformed(ActionEvent e) {     
                    // TODO 自动生成的方法存根     
                    do_button_2_actionPerformed(e);     
                }     
            });     
            button_2.setRolloverIcon(new ImageIcon(getClass().getResource("closeBH.jpg")));     
            button_2.setIcon(new ImageIcon(getClass().getResource("closeB.jpg")));     
            button_2.setFocusPainted(false);     
            button_2.setContentAreaFilled(false);     
            button_2.setBorderPainted(false);     
            panel.add(button_2);     
                        
            BackgroundPanel baclBackgroundPanel_1 = new BackgroundPanel();     
            Image topImage = new ImageIcon(getClass().getResource("frameCenter.png")).getImage();     
            baclBackgroundPanel_1.setImage(topImage);     
            contentPane.add(baclBackgroundPanel_1, BorderLayout.CENTER);     
                        
        }     
                
        protected void do_button_2_actionPerformed(ActionEvent e) {     
            // TODO 自动生成的方法存根     
            dispose();     
        }     
                
        protected void do_button_1_itemStateChanged(ItemEvent e) {     
            // TODO 自动生成的方法存根     
            if (e.getStateChange() == ItemEvent.SELECTED) {     
                setExtendedState(MAXIMIZED_BOTH);     
            else {     
                setExtendedState(NORMAL);     
            }     
        }     
                
        protected void do_button_actionPerformed(ActionEvent e) {     
            // TODO 自动生成的方法存根     
            setExtendedState(ICONIFIED);     
        }     
                
        protected void do_topPanel_mousePressed(MouseEvent e) {     
            // TODO 自动生成的方法存根     
            pressedPoint = e.getPoint();     
        }     
                
        protected void do_topPanel_mouseDragged(MouseEvent e) {     
            // TODO 自动生成的方法存根     
            Point point = e.getPoint();     
            Point locationPoint = getLocation();     
                        
            int x = locationPoint.x + point.x - pressedPoint.x;     
            int y = locationPoint.y + point.y - pressedPoint.y;     
                        
            setLocation(x, y);     
        }     
                
    }

    代码中用到的图片如下:(我不知道有什么更好的方法可以把图片保存到这篇文章里,所以只有贴到这里了,试验的同学可以直接另存图片到本机,放置到与.java相同路径下即可)









    展开全文
  • java怎么制作一个窗口(精!)

    万次阅读 多人点赞 2018-07-09 12:24:07
    那么今天我就来和大家聊聊如何才能用java做出一个可视化窗口! 需要的工具: eclipse (任意版本) JDK 下面是源码(一会讲都这些代码都干什么的!!) // 设置窗口x y坐标 //|欢迎下载本源码| this.setLocation...
  • java窗体

    2019-04-28 23:10:00
    听完老师所讲的窗体,然后自己就去尝试写代码,结果是窗体出现了,但是就是不能关闭,求解!! package Swing.src.swring; import java.awt.Color;import java.awt.Frame;import javax.swing.*;public class First...
  • java 窗体应用程序

    热门讨论 2012-11-02 14:50:16
    这是用java写的窗体应用程序,求一个数的平方,只要理解了这个程序,对java窗体程序应该没什么问题了!
  • Java窗体的应用

    2019-05-26 22:26:00
    计算机的界面 ...import java.awt.*; import javax.swing.*; public class ComputerDemo extends JFrame { JFrame f; JTextField t; JPanel p; GridLayout gl; JButton[] b; String[] t...
  • 死磕Java系列之Java GUI 窗体和布局

    万次阅读 多人点赞 2018-12-15 10:03:42
    窗体是底层容器,用于放各种组件,常见的容器有JFrame和JDialog两种,JPanel是中间容器,可以放在底层容器中,使用中间容器便于基本组件的管理。布局管理是将容器中的组件按照一定的规则和方式放在容器中。那么,如何...
  • Java窗体应用程序:人事管理系统

    万次阅读 多人点赞 2017-11-19 21:23:27
    老师布置了第二个JAVA作业,让写人事管理系统。 代码思路参考自:清华大学出版设出版的《Java课程设计案例精编(第3版)》 作业是老师在十月一日哦放假前让写的,所以十一回家写了俩界面,然后回到学校老师说先 ...
  • JAVA基本窗体创建——JFrame

    千次阅读 2018-07-03 10:46:40
    JFrame是包javax.swing下的类,能够用于创建窗体函数功能setTitle(String sTitle)设置窗体标题setIconImage(Image image)设置窗体的图标setSize(int Width,int Height)设置窗体大小 import javax.swing.*;...
  • java创建一个基本窗体

    千次阅读 2017-10-23 22:06:53
    java创建一个简单的窗体
  • Java Swing 图形界面开发(目录)

    万次阅读 多人点赞 2017-05-30 23:50:42
    Java Swing 图形界面(GUI)开发基础教程(目录)
  • Java Swing 图形界面开发简介

    万次阅读 多人点赞 2017-05-30 23:52:47
    Java Swing GUI 图形界面窗口开发基础教程,本教程将系统性地详细介绍 Swing 开发中常用的一些组件、布局管理器等相关知识技术,并且每章节都将通过代码实例展示实际应用。SwingJava 为图形界面应用开发提供的...
  • Java swing开发|Java实现窗体隐藏

    千次阅读 2012-12-15 00:05:03
    // 先声明都是转载的import java.awt.Point; import java.awt.Rectangle;import java.awt.*; ...import javax.swing.*; public class WindowSnapper extends ComponentAdapter { private boolea
  • Java Swing快速构建窗体应用程序

    千次阅读 2017-11-19 12:51:01
    以前接触java感觉其在桌面开发上,总是不太方便,没有一个好的拖拽界面布局工具,可以快速构建窗体. 最近学习了一下NetBeans IDE 8.1,感觉其窗体设计工具还是很不错的 , 就尝试一下做了一个窗体应用程序. 总体下来,感觉...
  • java swing开发学生选课系统 数据库使用MySQL 该系统主要包括学生和管理员两个用户角色 以学生角色登陆进去 学生可以查看自己的选修课情况 修改自己的个人信息 以管理员的角色登陆进去,管理员可以查看选修课的选修...
  • Java Swing 之设置窗体背景图片

    万次阅读 2014-05-02 21:59:33
    * 设置窗体背景图片 * @author gao */ package com.gao; import java.awt.Graphics; import java.awt.Image; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JPanel; public ...
  • JAVA Swing主题 简洁扁平化苹果风格主题

    万次阅读 多人点赞 2016-09-08 11:15:38
    1、多的不说,直接贴代码了,使用起来非常简单,直接在自己的main方法里贴上如下代码即可看看效果 InitGlobalFont(new Font(UICons.FONT_TYPE, Font.PLAIN, UICons.FONT_SIZE)); try { org.jb2011.lnf.beauty...
  • javaSwing各种主题窗口

    2013-09-30 07:26:38
    javaswing的各种主题窗口,包括window和苹果等不同系统上使用的窗口主题设置.
  • 代码(插入的图片没有显示 ...import java.awt.BorderLayout; import java.awt.Button; import java.awt.Panel; import java.awt.TextField; import java.awt.Window; import java.awt.event.ActionEvent; import
  • JAVA Swing学习之窗体文本显示

    千次阅读 2016-11-23 18:15:03
    JAVA中提供了一种类Font,专门用来定义字体,关于这个字体的定位需要注意几点: 1.利用Font类的getStringBounds方法来获得包围字符串的矩形; 2.如果要的得到屏幕设备对于字体属性的描述,需要调用Graphics的...
  • 关于Java Swing中的透明窗体

    千次阅读 2014-02-23 00:03:24
    说到桌面应用,大家肯定都希望自己做的界面能炫一点,酷一点。不知什么时候起,桌面UI的设计硬是刮起了透明效果的风暴,好像谁的窗体不透明就不够...用Swing怎么做出半透明的窗体效果呢?这本书里介绍的是用截屏的方式
  • java swing GUI窗口美化

    万次阅读 多人点赞 2018-10-26 15:36:16
    一般我们写出的窗口是这个样子的,文本框和按钮都不是太美观,如果按钮是原色的就更难看了。 今天发现了一个更加美观的窗口模式 可以发现按钮和文本框都已经有了... for (javax.swing.UIManage...
  • 1、利用监听器, 2、销毁当前的页面 jf.dispose(); 3、打开一个新的页面 ...package cn.com.swing; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java...
  • java swing中如何为一个窗体添加背景图片,java swing中如何为一个窗体添加背景图片
  • import java.awt.GridLayout; public class Display extends JFrame{ private JPanel jp = new JPanel(); private JMenuBar menu = new JMenuBar(); private JMenu m1,m2,m3; public JButton b[]; public ...
  • 使用JavaSwing组件编写的窗体类程序,用来显示系统当前的日期的时间,并随系统的变化而变化。
  • java swing图书管理系统 实现了管理员与学生的登录与注册 ,管理员功能,学生功能。 管理员功能有 1.显示图书 2.添加图书 3.删除图书 4.修改密码。学生功能有:1.查询图书 2.借阅图书 3.归还图书 4.修改密码。 ...
  • java swing 菜单栏怎么实现窗体切换

    千次阅读 2019-01-26 15:33:25
    使用的条件 1、这两个窗体有公共的部分,如菜单栏 ...  两个窗体的效果如下 黄色勾勒的部分是两个窗体的公共部分 操作:点击绞车房窗体里面菜单栏中平硐位移-卷扬室,就会跳转到平硐窗体...package cn.com.swing; ...

空空如也

1 2 3 4 5 ... 20
收藏数 168,216
精华内容 67,286
关键字:

java窗体

java 订阅