zoukankan      html  css  js  c++  java
  • GUI程序设计

    1. 对话框(JDialog)使用示例

    例1. JDialog简单使用示例。

    import javax.swing.JLabel;
    
    public class demoJDialog {
        JFrame mainJFrame;
        JLabel myJLabel;
        JDialog subJDialog;
        public demoJDialog(){
            mainJFrame = new JFrame("带对话框的JFrame演示窗口");
            myJLabel = new JLabel("世界,你好!");
            subJDialog = new JDialog(mainJFrame,"我是对话框",true);
            subJDialog.getContentPane().setLayout(new FlowLayout());
            subJDialog.getContentPane().add(myJLabel);
            mainJFrame.setSize(500, 400);
            mainJFrame.setVisible(true);
            mainJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            subJDialog.setSize(500, 400);
            subJDialog.setVisible(true);
        }
        public static void main(String[] args) {
            new demoJDialog();
    
        }
    
    }

    默认的subJDialog = new JDialog(mainJFrame,"我是对话框");创建的是非模态对话框,创建模态对话框如下:subJDialog = new JDialog(mainJFrame,"我是对话框",true);

    例2. 使用系统预定义的对话框。

    package GUI;
    
    import java.awt.Container;
    import java.awt.FlowLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JOptionPane;
    
    public class showTriDialog implements ActionListener {
        JFrame mainJFrame;
        JButton btnMessage,btnComfirm,btnInput;
        Container con;
        
        public showTriDialog(){
            mainJFrame = new JFrame("对话框使用范例");
            btnMessage = new JButton("显示消息对话框");
            btnComfirm = new JButton("显示确认对话框");
            btnInput = new JButton("显示输入对话框");
            con = mainJFrame.getContentPane();
            con.setLayout(new FlowLayout());
            con.add(btnMessage);
            con.add(btnComfirm);
            con.add(btnInput);
            mainJFrame.setSize(500, 400);
            mainJFrame.setVisible(true);
            mainJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            btnMessage.addActionListener(this);
            btnComfirm.addActionListener(this);
            btnInput.addActionListener(this);
        }
        
        public void actionPerformed(ActionEvent e) {
            if(e.getSource()==btnMessage)
                JOptionPane.showMessageDialog(mainJFrame, "这是一个简单的消息框");
            else if(e.getSource()==btnComfirm)
                JOptionPane.showConfirmDialog(mainJFrame, "这是一个有三个按钮的确认框,
    按任意按钮返回");
            else
                JOptionPane.showInputDialog(mainJFrame, "这是一个可供用户输入简单信息的对话框");    
        }
        
        public static void main(String[] args) {
            new showTriDialog();
    
        }
    
    }

    2. 面板(JPanel)使用示例——中间容器

    JPanel被称为面板,是最常用的中间容器。一般情况下,先将各种基本组件添加到其中,然后再将JPanel添加到其它容器(特别是顶层容器)中。JPanel的默认布局是流式布局。

    例3. 面板使用简单示例。

    package GUI;
    
    import java.awt.FlowLayout;
    
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    
    public class demoJPanel {
        JFrame mainJFrame;
        JPanel myJPanel;
        JLabel myJLabel;
        public demoJPanel(){
            mainJFrame = new JFrame("JPanel使用示例");
            myJPanel = new JPanel();
            myJLabel = new JLabel("本标签在JPanel上");
            myJPanel.setLayout(new FlowLayout());
            myJPanel.add(myJLabel);
            mainJFrame.add(myJPanel);
            mainJFrame.setSize(500, 400);
            mainJFrame.setVisible(true);
            mainJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
        public static void main(String[] args) {
            new demoJPanel();
    
        }
    
    }

    JPanel一个作用是方便布局,另外还有一个很重要的作用,就是当做画布来用。

    例4. 在面板上画出简单图形示例1。

    package GUI;
    
    import java.awt.Color;
    import java.awt.Graphics;
    
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    
    public class painting_1 {
        MyCanvas palette;
        JFrame mainJFrame;
        public class MyCanvas extends JPanel {
    
            protected void paintComponent(Graphics g) {
                g.setColor(Color.red);
                g.drawArc(10, 10, 100, 100, 0, 360);
                g.drawOval(100, 100, 100, 100);
                g.drawRect(50, 50, 100, 100);
                g.drawString("测试", 30, 30);
            }
            
        }
        public painting_1(){
            mainJFrame = new JFrame("用JPanel画图示例");
            palette = new MyCanvas();
            mainJFrame.add(palette);
            mainJFrame.setSize(500, 400);
            mainJFrame.setVisible(true);
            mainJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
        public static void main(String[] args) {
            new painting_1();
    
        }
    
    }

    当这个窗口改变时(包括最大化、最小化和调整窗口的大小),窗口中的图形和文字仍然可以正常显示。这要归功于paintComponent(Graphics g)方法。

    例5. 在面板上画出简单图形示例2 。(当用户单击按钮之后才会画图)

    package GUI;
    
    import java.awt.Color;
    import java.awt.Container;
    import java.awt.FlowLayout;
    import java.awt.Graphics;
    import java.awt.LayoutManager;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    
    public class painting_2 {
        JPanel palette;
        JFrame mainJFrame;
        Container con;
        JButton btn;
        dealPushBtn handleBtn;
        public class dealPushBtn implements ActionListener {
            public void actionPerformed(ActionEvent e) {
                Graphics g;
                final int orign_x = 100, orign_y = 100, radio = 50;
                final double scope = 30.0/180*Math.PI; //每次转动的角度
                double angle = 0.0;
                int x = orign_x+radio, y = orign_y+radio;
                g = palette.getGraphics();
                g.setColor(Color.GREEN);
                for(int i=0;i<12;i++){
                    g.drawArc(x, y, radio*2, radio*2, 0, 360);
                    angle += scope;
                    x =(int)(radio*Math.cos(angle)+orign_x);
                    y =(int)(radio*Math.sin(angle)+orign_y);
                }
            }    
        }
        
        public painting_2(){
            mainJFrame = new JFrame("用JPanel画图示例");
            handleBtn = new dealPushBtn();
            palette = new JPanel();
            btn = new JButton("画图");
            btn.addActionListener(handleBtn);
            palette.add(btn);
            mainJFrame.add(palette);
            mainJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            palette.setLayout(new FlowLayout());
            mainJFrame.setSize(300, 300);
            mainJFrame.setVisible(true);
        }
        public static void main(String[] args) {
            new painting_2();
    
        }
    
    }

    如果改变大小、最小化、最大化上面的图形就会不见了,按钮还在上面。这是因为图片是程序另外画上去的,面板并不知道它的存在。

    3. 滚动面板(JScollPane)使用示例

    例6. 在JScrollPane创建时添加组件示例。

    package GUI;
    
    import javax.swing.Icon;
    import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JScrollPane;
    import javax.swing.ScrollPaneLayout;
    
    public class demoJScrollPane_1 {
        JScrollPane jsp;
        JFrame jf;
        JLabel jl;
        public demoJScrollPane_1(){
            jf = new JFrame("这是一个JScorllPane示例");
            Icon picture = new ImageIcon("test.jpg");
            jl = new JLabel(picture);
            jsp = new JScrollPane(jl);
            jsp.setLayout(new ScrollPaneLayout());
            jf.add(jsp);
            jf.setSize(500, 400);
            jf.setVisible(true);
            jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            
        }
        public static void main(String[] args) {
            new demoJScrollPane_1();
    
        }
    
    }

    例7. 通过add()方法添加组件示例。

    package GUI;
    import javax.swing.Icon;
    import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JScrollPane;
    import javax.swing.ScrollPaneLayout;
    
    public class demoJScrollPane_2 {
        JScrollPane jsp;
        JFrame jf;
        JLabel jl;
        public demoJScrollPane_2(){
            jf = new JFrame("这是一个JScorllPane示例");
            Icon picture = new ImageIcon("test.jpg");
            jl = new JLabel(picture);
            jsp = new JScrollPane();
            jsp.getViewport().add(jl);
            jsp.setLayout(new ScrollPaneLayout());
            jf.add(jsp);
            jf.setSize(500, 400);
            jf.setVisible(true);
            jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            
        }
        public static void main(String[] args) {
            new demoJScrollPane_2();
    
        }
    
    }

    注意:无论采用哪种方法,都只能在JScrollPane中放置一个组件。如果多次添加,后面添加的组件将覆盖前面的组件。如果有多个组件要存放在JScrollPane中,需要先将这些组件存放在另外一个中间容器中,再将这个中间容器添加到JScrollPane中。

    4. 分隔板(JSplitPane)使用示例

    例8. 分隔板简单示例1。

    package GUI;
    
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JSplitPane;
    
    public class demoJSplitPane_1 {
        JFrame jf;
        JSplitPane jsp;
        JLabel jl1,jl2;
        public demoJSplitPane_1(){
            jf = new JFrame("这是一个JSplitPane使用示例");
            jl1 = new JLabel("这是左边窗口");
            jl2 = new JLabel("这是右边窗口");
            jsp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,jl1,jl2);
            jf.add(jsp);
            jf.setSize(500, 400);
            jf.setVisible(true);
            jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
        public static void main(String[] args) {
            new demoJSplitPane_1();
    
        }
    
    }

    与JScrollPane相同,在JSplitPane的一侧只能放置一个组件。如果需要放置多个组件,需要将这些组件放在另外一个中间容器中(这个中间容器也可以是JSplitPane),再添加进来。

    例9. 分隔板示例2。(将一个窗口分割成四个区域)

    package GUI;
    
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JSplitPane;
    
    public class demoJSplitPane_2 {
        JFrame jf;
        JLabel jl1,jl2,jl3,jl4;
        JSplitPane jsp1,jsp2,jsp3;
        public demoJSplitPane_2(){
            jf = new JFrame("四个窗口的JSplitPane示例");
            jl1 = new JLabel("左上");
            jl2 = new JLabel("左下");
            jl3 = new JLabel("右上");
            jl4 = new JLabel("右下");
            jsp1 = new JSplitPane(JSplitPane.VERTICAL_SPLIT,true,jl1,jl2);
            jsp2 = new JSplitPane(JSplitPane.VERTICAL_SPLIT,true,jl3,jl4);
            jsp3 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,jsp1,jsp2);
            jf.add(jsp3);
            jf.setSize(500, 400);
            jf.setVisible(true);
            jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
        public static void main(String[] args) {
            new demoJSplitPane_2();
    
        }
    
    }

    5. 选项板(JTabbedPane)使用示例

    例10. 选项板使用示例。

    package GUI;
    
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JTabbedPane;
    
    public class demoJTabbedPane {
        JFrame jf;
        JLabel jl1,jl2;
        JTabbedPane jtp;
        public demoJTabbedPane(){
            jf = new JFrame("JTabbedPane使用示例");
            jl1 = new JLabel("这是第一个选项卡");
            jl2 = new JLabel("这是第二个选项卡");
            jtp = new JTabbedPane();
            jtp.addTab("标签一", jl1);
            jtp.addTab("标签二", jl2);
            jf.add(jtp);
            jf.setSize(500, 400);
            jf.setVisible(true);
            jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
        public static void main(String[] args) {
            new demoJTabbedPane();
    
        }
    
    }

    6. 工具栏(JToolBar)使用示例

    在默认情况下,用户可以把工具栏拖动到容器各个边缘。因此,放置工具栏的容器应该使用BorderLayout布局,并且在其他边缘内不能存放其他组件,而只能在容器的中心摆放一个组件。

    JToolBar的使用非常简单,只是要注意往其中添加的按钮通常都是带图标的。

    例11. 工具栏使用示例。

    import java.awt.Container;
    
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JToolBar;
    
    public class demoJToolBar {
        JFrame jf;
        JButton jbt1,jbt2;
        JToolBar jtb;
        Container con;
        public demoJToolBar(){
            jf = new JFrame("JToolBar使用示例");
            jbt1 = new JButton(new ImageIcon("OPEN.jpg"));
            jbt1.setToolTipText("打开文档");
            jbt2 = new JButton(new ImageIcon("SAVE.jpg"));
            jbt2.setToolTipText("保存文档");
            jtb = new JToolBar();
            jtb.add(jbt1);
            jtb.add(jbt2);
            con = jf.getContentPane();
            con.add(jtb, BorderLayout.NORTH);
            jf.setSize(500, 400);
            jf.setVisible(true);
            jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
        public static void main(String[] args) {
            new demoJToolBar();
    
        }
    
    }

    7. 标签(Jlabel)使用示例——常用组件

    例12. 图像标签使用示例。

    package GUI;
    
    import java.awt.BorderLayout;
    import java.awt.Container;
    
    import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    
    public class demoJLabel_1 {
        JFrame jf;
        JLabel jl;
        Container con;
        public demoJLabel_1(){
            jf = new JFrame("图像标签使用示例");
            jl = new JLabel(new ImageIcon("test.png"));
            con = jf.getContentPane();
            con.add(jl, BorderLayout.CENTER);
            jf.setSize(500, 400);
            jf.setVisible(true);
            jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
        public static void main(String[] args) {
            new demoJLabel_1();
    
        }
    
    }

    例13. 改变标签上鼠标形状示例。

    package GUI;
    
    import java.awt.BorderLayout;
    import java.awt.Container;
    import java.awt.Cursor;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    
    public class demoJLabel_2 {
        JFrame jf;
        JLabel linkjl;
        ListenMouse lm;
        Container con;
        public class ListenMouse extends MouseAdapter {
            public void mouseEntered(MouseEvent e) {
                linkjl.setCursor(new Cursor(Cursor.HAND_CURSOR));
            }        
        }
        
        public demoJLabel_2(){
            jf = new JFrame("改变鼠标形状示例");
            linkjl = new JLabel("将鼠标放到标签上,将变成手型形状");
            lm = new ListenMouse();
            con = jf.getContentPane();
            linkjl.addMouseListener(lm);
            con.add(linkjl,BorderLayout.NORTH);
            jf.setSize(500, 400);
            jf.setVisible(true);
            jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
        public static void main(String[] args) {
            new demoJLabel_2();
    
        }
    
    }
  • 相关阅读:
    VOA 2009/11/02 DEVELOPMENT REPORT In Kenya, a Better Life Through Mobile Money
    2009.11.26教育报道在美留学生数量创历史新高
    Java中如何实现Tree的数据结构算法
    The Python Tutorial
    VOA HEALTH REPORT Debate Over New Guidelines for Breast Cancer Screening
    VOA ECONOMICS REPORT Nearly Half of US Jobs Now Held by Women
    VOA ECONOMICS REPORT Junior Achievement Marks 90 Years of Business Education
    VOA 2009/11/07 IN THE NEWS A Second Term for Karzai; US Jobless Rate at 10.2%
    Ant入门
    Python 与系统管理
  • 原文地址:https://www.cnblogs.com/gaopeng527/p/4246738.html
Copyright © 2011-2022 走看看