精华内容
下载资源
问答
  • Java 窗体关闭代码

    2012-09-09 23:10:04
    这个程序是实现窗体关闭的功能! 程序代码简单易懂,可以参考和复制用下
  • java 窗体程序swing

    千次阅读 2017-02-04 14:55:24
    利用以下的功能基本可以写一个小的窗体程序了。 package test2; import java.awt.BorderLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.GridLayout; import java.a

    以下代码是修改他人的源码,增加一些注释。

    利用以下的功能基本可以写一个小的窗体程序了。

    package test2;
    
    import java.awt.BorderLayout;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.GridLayout;
    import java.awt.Insets;
    import java.awt.event.ActionEvent;
    import java.util.Arrays;
    import java.util.List;
    
    import javax.swing.AbstractAction;
    import javax.swing.Action;
    import javax.swing.BorderFactory;
    import javax.swing.JButton;
    import javax.swing.JComponent;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JPasswordField;
    import javax.swing.JTextField;
    import javax.swing.SwingUtilities;
    import javax.swing.UIManager;
    
     
    /**
     * @author Administrator
     *
     */
    public class MyFrameTow extends JPanel {
    
    	private static final String LABEL_USERNAME = "用户账号:";
    	private static final String LABEL_PASSWORD = "用户密码:";
    
    	private static final String LABEL_OK = "确定";
    	private static final String LABEL_Cancel = "取消";
    
    	private static final int FIELD_COLS = 20;
    
    	private JTextField fieldUsername;
    	private JPasswordField fieldPassword;
    
    	private Action actionOK;
    	private Action actionCancel;
    	
    	
    	public static void main(String[] args) {
    
    		SwingUtilities.invokeLater(new Runnable() {
    			@Override
    			public void run() {
    				try {
    					UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    				JFrame test = new JFrame("欢迎进入本系统");
    				test.setContentPane(new MyFrameTow());
    				test.pack();
    				test.setResizable(false);
    				test.setLocationRelativeTo(null);
    				test.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    				test.setVisible(true);
    			}
    		});
    	}
    
    
    
    	MyFrameTow() {
    
    		super(new BorderLayout(5, 5));
    		assert SwingUtilities.isEventDispatchThread();
    		// 文本框
    		fieldUsername = new JTextField(FIELD_COLS);
    		// 密码框
    		fieldPassword = new JPasswordField(FIELD_COLS);
    
    		actionOK = new AbstractAction(LABEL_OK) {
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				// @TODO to be implemented. 实现确认按钮的操作
    				//TODO
    				String text = fieldUsername.getText();
    				if (text.isEmpty()) {
    					JOptionPane.showMessageDialog(null, "用户名不能为空!", "提示", JOptionPane.ERROR_MESSAGE);
    					return;
    				}
    				
    				JOptionPane.showMessageDialog(null, "这是一个假登录"+text, "提示", JOptionPane.ERROR_MESSAGE); 
    			}
    		};
    
    		actionCancel = new AbstractAction(LABEL_Cancel) {
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				// @TODO to be implemented. 实现取消按钮的操作
    				//退出程序
    				System.exit(0);
    			}
    		};
    		//  BorderLayout.NORTH 这是指定向北浮动
    		add(layoutText(Arrays.asList( "第一行文字", "第二行文字", "第三行文字")), BorderLayout.NORTH);
    		add(layoutFields(), BorderLayout.CENTER);
    		add(layoutControl(), BorderLayout.SOUTH);
    
    		setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
    	}
    
    	private JComponent layoutControl() {
    		// 控件布局  
    		JComponent result = new JPanel();
    		// 这里是确认 和 取消的按钮
    		result.add(new JButton(actionOK));
    		result.add(new JButton(actionCancel));
    
    		return result;
    	}
    
    	private JComponent layoutFields() {
    		// 布局位置
    		JComponent result = new JPanel(new GridBagLayout());
    		GridBagConstraints gbc = new GridBagConstraints();
    
    		gbc.gridx = 0;
    		gbc.gridy = 0;
    		//固定 向西
    		gbc.anchor = GridBagConstraints.WEST;
    		//是否填充 
    		gbc.fill = GridBagConstraints.NONE;
    		gbc.insets = new Insets(5, 5, 5, 5);
    		//加入文字描述
    		result.add(new JLabel(getBoldHTML(LABEL_USERNAME)), gbc);
    		gbc.gridy++;
    		result.add(new JLabel(getBoldHTML(LABEL_PASSWORD)), gbc);
    
    		gbc.gridx++;
    		gbc.gridy = 0;
    		gbc.fill = GridBagConstraints.HORIZONTAL;
    		result.add(fieldUsername, gbc);
    		gbc.gridy++;
    		result.add(fieldPassword, gbc);
    
    		return result;
    	}
    
    	private JComponent layoutText(List<String> lines) {
    
    		assert lines != null;
    
    		JComponent result = new JPanel(new GridLayout(lines.size(), 1));
    		for (String line : lines)
    			result.add(new JLabel(line));
    
    		result.setBorder(BorderFactory.createEmptyBorder(5, 10, 0, 10));
    		return result;
    	}
    
    	private String getBoldHTML(String s) {
    		// 设置字体的大小粗细
    		return "<html><b>" + s + "</b></html>";
    	}
    }
    


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

    展开全文
  • 简介介绍JAVA窗体程序调用图片、音频、字体三种静态资源的代码。使用这种方法调用静态资源,可以直接把静态资源打包到JAR包里。在音频调用中,可能会由于Eclipse的原因报错,解决办法参见有关import sun.audio....

    简介

    介绍JAVA窗体程序调用图片、音频、字体三种静态资源的代码。使用这种方法调用静态资源,可以直接把静态资源打包到JAR包里。

    在音频调用中,可能会由于Eclipse的原因报错,解决办法参见有关import sun.audio.AudioPlayer(或者其它文件)的问题

    Demo

    这是我封装的一个修改JFrame外观的类,在里面使用的就是接下来贴的方法。

    github地址:https://github.com/kongtianyi/changeView

    下载后用Eclipes打开运行即可。

    效果图(自行脑补BGM):
    这里写图片描述

    函数定义

    在一个类中(继承自JFrame的一个类)定义以下方法,很遗憾不能设置成静态方法跨类调用。

    
    /**
     * 根据相对路径加载图片
     * @param path: 图片的相对路径
     * @return: 获取到的图片对象
     */
    public Image getImagePath(String path) {  
        Image image=null;  
        InputStream is = (InputStream) this.getClass().getClassLoader().getResourceAsStream(path);    try {
            image=ImageIO.read(is);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return image;  
    } 
    
    
    /**
     * 根据相对路径加载音频
     * @param path: 音频文件的相对路径
     * @return: 获取到的音频对象
     */
    public AudioStream getAudioPath(String resource){  
        InputStream is = (InputStream) this.getClass().getClassLoader().getResourceAsStream(resource);     
        AudioStream as = null;
        try {
            as = new AudioStream(is);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return as;  
    } 
    
    /**
     * 根据相对路径加载字体
     * @param path: 字体文件的相对路径
     * @return: 获取到的字体对象
     */
    public Font getDefinedFont(String path) {  
        if (definedFont == null) {  
            InputStream is = null;  
            BufferedInputStream bis = null;  
            try {  
                is = (InputStream) this.getClass().getClassLoader().getResourceAsStream(path);            bis = new BufferedInputStream(is);  
                definedFont = Font.createFont(Font.TRUETYPE_FONT, bis);  
                definedFont = definedFont.deriveFont(25f);  
                definedFont = definedFont.deriveFont(Font.BOLD);
            } catch (FontFormatException e) {  
                e.printStackTrace();  
            } catch (IOException e) {  
                e.printStackTrace();  
            } finally {  
                try {  
                     if (null != bis) {  
                        bis.close();  
                     }  
                     if (null != is) {  
                        is.close();  
                     }  
                } catch (IOException e) {  
                    e.printStackTrace();  
                }  
            }  
        }  
        return definedFont;  
    } 

    调用方法

    /*图片*/
    logo = getImagePath("resource/image/logo.png");
    logoIcon = new ImageIcon(logo);
    logoLabel = new JLabel(logoIcon);
    
    /*字体*/
    titel = new JLabel(name);
    titel.setFont(getDefinedFont("resource/font/叶根友毛笔特色简体.ttf"));
    
    /*音乐*/
    backMusic = getAudioPath("resource/music/竹苑情歌.au");
    AudioPlayer.player.start(backMusic);  /*播放背景音乐*/

    关于txt

    如果仅仅是读取的话,可以考虑用上述方法打入到JAR包中,但是如果涉及到修改TXT文件的内容,就不能再打入到JAR里了,那么操作的方法就是,在源码中需要操作文件的地方直接写文件名,没有路径,然后把文件保存在JAR文件的同一目录下,就可以实现文件的操作了。当然,其它资源文件也可以用这种方法访问,但是在一些具体的情况下,还是将资源文件打入到JAR包会比较方便。

    展开全文
  • Java版在窗体中实现滑块拖动的代码,相信这个功能大家应用熟悉,拖动滑块在滑杆上移动,可改变预设置,可应用于多种环境下。  super("滑杆演示"); //调用父类构造函数  panel=new GraphPanel(); //实例化面板 ...
  • 今天在Npp里写了一个简单的窗体程序代码如下: import javax.swing.*; public class FirstFrame {  public static void main(String []args)  {  SimpleFrame frame=new SimpleFrame(); frame....
       今天在Npp里写了一个简单的窗体程序,代码如下:
    import javax.swing.*;
    public class FirstFrame
    {
      public static void main(String []args)
      {
        SimpleFrame frame=new SimpleFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.show();
        }
    }
    class SimpleFrame extends JFrame
    {
      public SimpleFrame()
      {
       setSize(WIDTH,HEIGHT);
      }
     public static final int WIDTH=300;
     public static final int HEIGHT=200;

     }
     
         在命令行环境下编译出现了如下错误:
       编译java窗体程序时出现:使用或覆盖了已过时的API
       
       随后用Elipse运行了一下发现没有问题,不过show()上有明显的横杠,查询了相关资料才知道原因:
    
         void show()从JDK1.5开始就已经过时,由void setVisible(boollean)取代,Eclipse虽然能够运行,但同样用在show()上发横杠的方式提醒show()已经过时,改为由setVisible(boolean)取代。
    
    
         将frame.show()修改为frame.setVisible(true),编译运行即可。
    
    展开全文
  • java窗体设计+GUI经典代码全放送

    热门讨论 2011-12-11 11:12:09
    java窗体设计经典代码,手把手叫你如何设计java窗体,编写应用程序
  • 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

    【!!!】欢迎关注我的个人线上课堂https://www.zuikakuedu.top,内含JavaWeb与Unity游戏开发实战教程,完全免费!,Csdn博客涉及的课程资料也在该网站上

    展开全文
  • Java窗体应用程序:人事管理系统

    万次阅读 多人点赞 2017-11-19 21:23:27
    代码思路参考自:清华大学出版设出版的《Java课程设计案例精编(第3版)》 作业是老师在十月一日哦放假前让写的,所以十一回家写了俩界面,然后回到学校老师说先 不做这个,先写一个订餐系统,后来为了参加十一月...
  • 开发一个MyFrame窗体应用程序,该窗体继承JFrame类,窗体中的标题、按钮上的文字等信息都可以写在一个xml配置文件中,即使以后想更改所有的属性,只需要更改xml配置文件中的相应属性即可。 本案例使用java中的...
  • 最简单的窗体创建代码 package 关于图形用户界面程序设计的有关基础设计代码; //先导包 import java.awt.; import javax.swing.; public class 基础设计1_1 { public static void main(String[] args) { //事件分配...
  • Java计算器程序代码

    2015-09-20 21:05:21
    用NetBeans创建窗体,再通过编写代码实现按钮的功能。步骤如下,因为是初学者,所以只实现了基本功能。 1)先创建计算机窗体   2)为各个按钮添加事件 private void jButton1MouseReleased(java.awt.event...
  • 创建项目 采用MVC结构 这里的模型即M是用Triangle来实现的 ...主要程序代码 package com.fhzheng.mvcwin; public class Example10_15 { public static void main(String[] args) { WindowTriangle w...
  • 本资源为java程序设计一些代码程序,内容从java基础到java窗体程序实现,到数据库连接应用,每一个程序都调试通过。绝对是初学者练习的好资料。
  • 内容索引:Java源码,初学实例,Java窗体 本压缩包收集的是Java语言程序设计基础篇的完整配套源代码,一共包括18章,源代码涉及的内容包括基础函数应用、字符串处理、Swing简易窗体,数据库操作,小游戏,数组处理,...
  • 简单地显示一个窗口所需的最少代码 import javax.swing.JFrame; public class main { static class Win extends JFrame{//static不能少 Win() { setVisible(true);//setv } } public static void ...
  • 例如设置窗体标题,java swing用的是setTitle().另外窗体居中用的是setLocationRelativeTo(getOwner()). 获取文本框的值为getText()方法,如下代码所示: 1 public Login() { 2 initComponen
  • Java窗体透明化(无边框)

    万次阅读 多人点赞 2017-02-24 16:01:14
    Java 窗体透明化(无边框)这几天我在写一个记事本程序,为了方便记事本记事,我准备将记事本界面透明化。于是上网查了一下资料。然后将透明化界面做了出来。可是在做的过程中我还是遇到了一些小小的问题,所以就把它...
  • java应用小程序代码

    2009-12-18 19:41:17
    实现的功能:(1)TextField中输入用户名及其密码 (2)Checkbox表示学生的性别 (3)点击按钮时,将所有信息在TextArea中显示出来 (4)点击窗口关闭按钮可以关闭窗体
  • java Swing窗体版多线程下载程序编写示例,多线程下载的实现, 将网络URL中指定的网络文件下载到本地文件中保存。  本代码中将完成新建任务构造器、配置文件构造器,保存下载信息,获取配置文件名,设置在前台显示...
  • 新建一个窗体程序自动播放音乐,可以选择自己喜欢的歌曲播放,可用于平时的窗体练习或者游戏界面的背景音乐,拿走不谢。 首先,该播放器需要两个类,一个用来构建窗体,一个用来设置音乐。 话不多说,直接上代码 ...
  • 代码: Test类: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Test extends JFrame { JButton week1, week2, week3, week4, week5, week6, week7, n
  • 本压缩包收集的是Java语言程序设计基础篇的完整配套源代码,一共包括18章,源代码涉及的内容包括基础函数应用、字符串处理、Swing简易窗体,数据库操作,小游戏,数组处理,键盘事件操作,菜单与面板制作等方面,...
  • 实训!要求: 1.简单实现日历功能,能查看前月后月的日历功能。...代码: CalendaBean.java import java.util.Calendar; public class CalendaBean { Test test; String[] day; int year = 2017, month =
  • Java仿QQ聊天程序代码

    热门讨论 2010-09-17 12:41:56
    Java仿QQ聊天程序代码 HAHA CHAT Java仿QQ聊天程序...这个聊天程序有着QQ一样的隐藏窗体程序有服务端和QQ登录端,同时还有一些设置程序,虽然窗口没有现在的QQ漂亮,但是用Java写出来我觉得挺难得了,奉献给大家 。
  • 实训要求:编写一个窗体程序,能够对文本区中的文字设置字体和大小。 代码: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class FontChange extends JFrame implements ...
  • 返回本章节 返回作业目录 需求说明: 使用JFrame创建一个窗体 实现思路: ...使用JFrame创建窗体的思路 ...定义一个窗体对象f,窗体名称为“一个简单窗口” ...设置窗体左上角与显示屏左上角的坐标 ...实现代码
  • import javax.swing.*; import java.awt.*; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener;...import java.awt.event.ActionEvent;... * @Description: //TODO 第一个swing程序 * @.
  • 设计一个窗体程序,有两个文本框,其中第二个文本框是不可编辑的,有三个按钮,点击Copy按钮能把第一个文本框复制到第二个文本框,点击Clear按钮能把两个文本框的内容清空,也可以用快捷键ALT+R与ALT+Y操作 ...
  • 代码: EquationException类: import java.awt.*; import java.awt.event.*; import javax.swing.*; class EquationException extends RuntimeException { public static final int NONE_EQUATION = 1;
  •  麻烦是说由于设计器的使用不方便(如果您希望使用窗体设计器通过快速拖拽控件建立您的Java Swing GUI程序,请您使用MyEclipse 8.5以上版本,并且需要最高使用权限),所有代码都得手写,如果没有好的编码规范和...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 467
精华内容 186
关键字:

java窗体程序代码

java 订阅