java-swing

java的swing

import javax.swing.*;
import javax.swing.plaf.DimensionUIResource;
import java.awt.*;
import java.awt.event.*;

public class GUI1 {
    JFrame f=new JFrame("主窗体");   //主窗体用Jframe
    JMenuBar jMenuBar=new JMenuBar();
    JMenu filemu=new JMenu("文件");
    JMenu edit=new JMenu("编辑");
    JMenuItem copy=new JMenuItem("复制");
    JMenuItem paste=new JMenuItem("粘贴");
    JTextArea ta=new JTextArea(8,20);  //八行20列文本框
    JComboBox colorselect=new JComboBox();  //下拉选择框
    /*---------男女单一勾选框组---------------------*/
    ButtonGroup bg=new ButtonGroup();  //按钮组
    JRadioButton male=new JRadioButton("男",false);  //勾选框
    JRadioButton female=new JRadioButton("女",true);  //勾选框
    /*--------------------------------------------*/
    JCheckBox ismarry=new JCheckBox("是否已婚",true);  //默认是选中的
    JTextField tf=new JTextField(40); //四十列的多行文本框
    JButton ok=new JButton("确定",new ImageIcon("sheep.jpg"));   //button可以加图片图标
    /*------------改风格右击菜单组-----------*/
    JPopupMenu jPopupMenu=new JPopupMenu();  //用于设置风格的右键弹出框
    ButtonGroup popupg=new ButtonGroup();
    JRadioButtonMenuItem window_sty=new JRadioButtonMenuItem("win风格",true);
    JRadioButtonMenuItem metal_sty=new JRadioButtonMenuItem("金属风格");
    JRadioButtonMenuItem nimbus_sty=new JRadioButtonMenuItem("nim风格");
    /*-------------------------------------*/

    private void changeFlavor(String command) throws  Exception{
        switch (command) {
            case "win风格":
                UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
                break;
            case "金属风格":
                UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
                break;
            case "nim风格":
                UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
                break;
        }
        SwingUtilities.updateComponentTreeUI(f.getContentPane());   //刷新组件的外观
        SwingUtilities.updateComponentTreeUI(jMenuBar); //刷新菜单条
        SwingUtilities.updateComponentTreeUI(jPopupMenu); //书信右击菜单
        //f.getContentPane()所有容器的组件
    }

    public void  init(){
        /*装右键菜单*/
        popupg.add(window_sty);
        popupg.add(metal_sty);
        popupg.add(nimbus_sty);
        jPopupMenu.add(window_sty);
        jPopupMenu.add(metal_sty);
        jPopupMenu.add(nimbus_sty);
    /*修改风格*/

    /*事件监听器*/
        ActionListener listener=new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String actioncommand=e.getActionCommand(); //获取当前单击的项的名字
                try {
                    changeFlavor(actioncommand);
                }catch (Exception exp){}
            }
        };
        metal_sty.addActionListener(listener);
        nimbus_sty.addActionListener(listener);
        window_sty.addActionListener(listener);

    /*装菜单条*/
    filemu.add(edit);
    edit.add(paste);
    filemu.add(copy);
    jMenuBar.add(filemu);
    f.setJMenuBar(jMenuBar);
    /*水平的box1放单行文本框和ok按钮*/
    Box box1=Box.createHorizontalBox();
    box1.add(tf);
    ok.setPreferredSize(new Dimension(100,50));  //设置按钮的大小
    box1.add(ok);
    f.add(box1,BorderLayout.SOUTH);  //加到南部
    /*垂直的box2l装多行文本框和box3*/
    Box box2=Box.createVerticalBox();
    Box box3=Box.createHorizontalBox();
    colorselect.addItem("红色"); colorselect.addItem("绿色");
    bg.add(male);bg.add(female);  //男人女人两个框只能单选
    box3.add(male);box3.add(female);box3.add(ismarry);box3.add(colorselect); //水平box3装的内容
    box2.add(ta); box2.add(box3);
    Box box4=Box.createHorizontalBox();
    box4.add(box2);
    ta.setComponentPopupMenu(jPopupMenu);  //在box4上设置右击菜单

    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   //直接这样写就可以弄好关闭菜单
    f.add(box4,BorderLayout.CENTER);
    f.pack();
    f.setVisible(true);
    }

    public static void main(String[] args) throws Exception {
        GUI1 gui1=new GUI1();
        gui1.init();
    }
}

 

 

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.imageio.ImageIO;
import javax.swing.*;

class Zqhpanel extends JPanel{

        Image backimg;
        ImageIcon icon;

        public void paint(Graphics g) {
            try {
                backimg = ImageIO.read(new File("D:\\study tool\\java_proj\\back.jpg"));
                super.paint(g);
                g.drawImage(backimg, 0, 0, this.getWidth(), this.getHeight(), this);
                //重绘子组件,不然会出现异常“有个按钮需要鼠标移动到它上边才显示”
                super.paintChildren(g);
            } catch (Exception e) {
            }
        }
}

public class test {
    final int win_width = 400;
    final int win_height = 300;
    JFrame win = new JFrame("zqh电台");   //主窗体用Jframe
    JTextField t1 = new JTextField("请输入用户名");
    JButton login = new JButton("登录");
    JLabel l1 = new JLabel("登录时需要帮助?");
    JButton b1 = new JButton("联系方式");
    Zqhpanel zqhpanel=new Zqhpanel();
    public void init(){
        //-------------获取屏幕的大小--------------------
        Toolkit tk = Toolkit.getDefaultToolkit();//得到Toolkit对象(实例化)
        Dimension screen=tk.getScreenSize();//得到屏幕的大小
        int screen_wid=(int)screen.getWidth();
        int screen_hei=(int)screen.getHeight();
//        System.out.println (screen.getWidth());//输出屏幕的宽度
//        System.out.println (screen.getHeight());//输出屏幕的高度
        win.add(zqhpanel);
        win.setBounds((screen_wid-win_width)/2,(screen_hei-win_height)/2,win_width,win_height);
        win.setResizable(false);
        Box box1=Box.createVerticalBox();
        Box ubox=Box.createHorizontalBox();
        Box hbox=Box.createHorizontalBox();

        t1.setPreferredSize(new Dimension(100,30));
        login.setPreferredSize(new Dimension(80,30));
        ubox.add(Box.createHorizontalStrut(50));
        ubox.add(t1);
        ubox.add(Box.createHorizontalStrut(20));
        ubox.add(login);

        l1.setPreferredSize(new Dimension(100,30));
        b1.setPreferredSize(new Dimension(80,30));
        hbox.add(Box.createHorizontalStrut(50));
        hbox.add(l1);
        hbox.add(Box.createHorizontalStrut(30));  //设置文本和联系方式的水平间距
        hbox.add(b1);

        box1.add(Box.createVerticalStrut(100));
        box1.add(ubox);
        box1.add(Box.createVerticalStrut(20));
        box1.add(hbox);
        zqhpanel.add(box1);
//        win.pack();
        win.setVisible(true);
    }
    public static void main(String[] args) throws Exception {
    //设置一个窗口
    test t1=new test();
    t1.init();
    }
}

 

posted @ 2021-03-09 19:51  克莱比-Kirby  阅读(125)  评论(0)    收藏  举报