本站提倡有节制游戏,合理安排游戏时间,注意劳逸结合。

【直控源码】【git 源码升级】【ios源码推荐】gridlayoutgroup 源码

2024-11-19 01:37:24 来源:综合 分类:综合

1.gridlayoutgroup Դ??
2.JAVA课程设计计算器的源代码
3.Unity的拖拽与摆放问题(实现简易拼图小游戏)
4.Unity3D MMORPG背包系统的设计与实现详解
5.Qt官方示例翻译--Group Box Example
6.java编译文本编辑器

gridlayoutgroup 源码

gridlayoutgroup Դ??

       ScrollView滑动效果在游戏开发中扮演重要角色,但对许多同学而言,掌握其技巧并不容易。让我们一起来探讨如何制作ScrollView。

       开始制作之前,我们需要在场景中创建一个空节点,直控源码作为界面的父节点。

       接着,创建名为SV的空节点,其区域大小预估为滑动区域(即显示物体的区域),如图所示。

       随后,构建名为ScrollRect的空节点,其区域如下图所示。

       在ScrollRect右侧加入ScrollRect组件。

       接着,加入名为ViewPort的空节点,其区域大小与需添加的组件如图。

       继续构建名为Content的git 源码升级空节点,添加的组件如图。

       Item登场,我们先观察一下它的样式:

       将多个Item复制,并放入Content下面。

       此时,发现的背景似乎被缩短了。接下来,点击Content调整GridLayoutGroup中的CellSize尺寸,这是控制每个Item尺寸的参数。

       调整另一个参数,以获得所需效果。

       接下来,根据实际需求(例如,若为两列,则填2),调整对应的GridLayoutGroup参数。

       下图展示了Spacing,即每个Item之间的ios源码推荐间隔。

       接着,将Content和ViewPort拖至相应位置。

       最后,取消水平滑动功能,因为我们关注的是垂直滑动。

       完成以上步骤后,即可实现滑动效果。

JAVA课程设计计算器的源代码

       比较完整的Java计算器

       import javax.swing.*;

       import javax.swing.event.*;

       import java.awt.*;

       import java.awt.event.*;

       public class calculator extends JFrame implements ActionListener

       { //这里我把JFrame写成Frame,这个错误找了好久

        JFrame frame;

        private JButton jia=new JButton("+");

        private JButton jian=new JButton("-");

        private JButton cheng=new JButton("*");

        private JButton chu=new JButton("/");

        private JButton qiuyi=new JButton("%");

        private JButton deng=new JButton("=");

        private JButton fu=new JButton("+/-");

        private JButton dian=new JButton(".");

        private JButton kai=new JButton("sqrt");

        private JButton diao=new JButton("1/x");

        private JButton aa=new JButton("A");

        private JButton bb=new JButton("B");

        private JButton cc=new JButton("C");

        private JButton dd=new JButton("D");

        private JButton ee=new JButton("E");

        private JButton ff=new JButton("F");

        private TextField k1=new TextField();

        private objConversion convert = new objConversion();

        JMenuItem copy,paste,s,t,help,about,me;

        JRadioButton sixteen,ten,eight,two;

        JButton backspace,ce,c,num0,num1,num2,num3,num4,num5,num6,num7,num8,num9;

        Container cp;

        JTextField text;

        String copycontent="";

        boolean clickable=true,clear=true;

        int all=0;

        double qian;

        String fuhao;

        int jin=,first=1;

       public calculator()

        {

        setTitle("计算器-杨彩制作");

        setSize(,);

        setLocation(,);

        text=new JTextField();

        // text.setEnabled(false);

        text.setText("0.");

        text.setHorizontalAlignment(JTextField.RIGHT);//从右到左

       JPanel cp1=new JPanel();

        JPanel cp2=new JPanel();

        JPanel cp3=new JPanel();

       cp=getContentPane();

        cp.add(cp1,"North");

        cp.add(cp2,"Center");

        cp.add(cp3,"South");

        cp1.setLayout(new GridLayout(1,6));

        cp2.setLayout(new GridLayout(2,4));

        cp3.setLayout(new GridLayout(6,6));

        sixteen=new JRadioButton("十六进制");

        sixteen.setVisible(false);

        ten=new JRadioButton("十进制",true);

        ten.setVisible(false);

        eight=new JRadioButton("八进制");

        eight.setVisible(false);

        two=new JRadioButton("二进制");

        two.setVisible(false);

        sixteen.addActionListener(this);

        ten.addActionListener(this);

        eight.addActionListener(this);

        two.addActionListener(this);

        ButtonGroup btg=new ButtonGroup();

        btg.add(sixteen);

        btg.add(ten);

        btg.add(eight);

        btg.add(two);

        JTextField t3=new JTextField();

        cp1.add(text);

        // text.setEnabled(false);

        text.setEditable(false);

        text.setBackground(new Color(, , ));

        cp2.add(sixteen);

        cp2.add(ten);

        cp2.add(eight);

        cp2.add(two);

        backspace=new JButton("Backspace");

        backspace.setForeground(new Color(,0,0));

        backspace.addActionListener(this);

        ce=new JButton("CE");

        ce.setForeground(new Color(,0,0));

        ce.addActionListener(this);

        c=new JButton("C");

        c.setForeground(new Color(,0,0));

        c.addActionListener(this);

        k1.setVisible(false);

        cp2.add(k1);

        cp2.add(backspace);

        cp2.add(ce);

        cp2.add(c);

       num0=new JButton("0");

        num1=new JButton("1");

        num2=new JButton("2");

        num3=new JButton("3");

        num4=new JButton("4");

        num5=new JButton("5");

        num6=new JButton("6");

        num7=new JButton("7");

        num8=new JButton("8");

        num9=new JButton("9");

       cp3.add(num7);

        num7.addActionListener(this);

        cp3.add(num8);

        num8.addActionListener(this);

        cp3.add(num9);

        num9.addActionListener(this);

        cp3.add(chu);

        chu.setForeground(new Color(,0,0));

        chu.addActionListener(this);

        cp3.add(kai);

        kai.addActionListener(this);

        cp3.add(num4);

        num4.addActionListener(this);

        cp3.add(num5);

        num5.addActionListener(this);

        cp3.add(num6);

        num6.addActionListener(this);

        cp3.add(cheng);

        cheng.setForeground(new Color(,0,0));

        cheng.addActionListener(this);

        cp3.add(qiuyi);

        qiuyi.addActionListener(this);

        cp3.add(num1);

        num1.addActionListener(this);

        cp3.add(num2);

        num2.addActionListener(this);

        cp3.add(num3);

        num3.addActionListener(this);

        cp3.add(jian);

        jian.setForeground(new Color(,0,0));

        jian.addActionListener(this);

        cp3.add(diao);

        diao.addActionListener(this);

        cp3.add(num0);

        num0.addActionListener(this);

        cp3.add(fu);

        fu.addActionListener(this);

        cp3.add(dian);

        dian.addActionListener(this);

        cp3.add(jia);

        jia.setForeground(new Color(,0,0));

        jia.addActionListener(this);

        cp3.add(deng);

        deng.setForeground(new Color(,0,0));

        deng.addActionListener(this);

        cp3.add(aa);

        aa.addActionListener(this);

        cp3.add(bb);

        bb.addActionListener(this);

        cp3.add(cc);

        cc.addActionListener(this);

        cp3.add(dd);

        dd.addActionListener(this);

        cp3.add(ee);

        ee.addActionListener(this);

        cp3.add(ff);

        ff.addActionListener(this);

        aa.setVisible(false);

        bb.setVisible(false);

        cc.setVisible(false);

        dd.setVisible(false);

        ee.setVisible(false);

        ff.setVisible(false);

       JMenuBar mainMenu = new JMenuBar();

        setJMenuBar(mainMenu);

        JMenu editMenu = new JMenu("编辑");

        JMenu viewMenu = new JMenu("查看");

        JMenu helpMenu = new JMenu("帮助");

        mainMenu.add(editMenu);

        mainMenu.add(viewMenu);

        mainMenu.add(helpMenu);

        copy = new JMenuItem(" 复制");

        paste = new JMenuItem(" 粘贴");

        KeyStroke copyks=KeyStroke.getKeyStroke(KeyEvent.VK_C,Event.CTRL_MASK);

        copy.setAccelerator(copyks);//设置退出菜单选项加上快捷键

        KeyStroke pasteks=KeyStroke.getKeyStroke(KeyEvent.VK_V,Event.CTRL_MASK);

        paste.setAccelerator(pasteks);//设置退出菜单选项加上快捷键

        editMenu.add(copy);

        editMenu.add(paste);

        copy.addActionListener(this);

        paste.addActionListener(this);

        t = new JMenuItem("●标准型");

        s = new JMenuItem(" 科学型");

        viewMenu.add(t);

        viewMenu.add(s);

        t.addActionListener(this);

        s.addActionListener(this);

        help = new JMenuItem(" 帮助主题");

        about = new JMenuItem(" 关于计算器");

        me = new JMenuItem(" 作者主页");

        helpMenu.add(help);

        helpMenu.add(about);

        helpMenu.add(me);

        help.addActionListener(this);

        about.addActionListener(this);

        me.addActionListener(this);

       addWindowListener(new WindowDestroyer());//结束窗口

        }

       public void actionPerformed(ActionEvent e)

        { //响应动作代码

        if(first==1)

        text.setText("");

        first=0;//第一次把文本框0.清空

        Object temp = e.getSource();

        if(temp==copy)

        {

        copycontent = text.getText();

        }

        if(temp==paste)

        {

        text.setText(text.getText()+copycontent);

        }

        if(temp==t)

        { //标准

        sixteen.setVisible(false);

        ten.setVisible(false);

        eight.setVisible(false);

        two.setVisible(false);

        t.setText("●标准型");

        s.setText(" 科学型");

        aa.setVisible(false);

        bb.setVisible(false);

        cc.setVisible(false);

        dd.setVisible(false);

        ee.setVisible(false);

        ff.setVisible(false);

        }

        if(temp==s)

        { //科学

        sixteen.setVisible(true);

        ten.setVisible(true);

        eight.setVisible(true);

        two.setVisible(true);

        t.setText(" 标准型");

        s.setText("●科学型");

        aa.setVisible(true);

        bb.setVisible(true);

        cc.setVisible(true);

        dd.setVisible(true);

        ee.setVisible(true);

        ff.setVisible(true);

        aa.setEnabled(false);

        bb.setEnabled(false);

        cc.setEnabled(false);

        dd.setEnabled(false);

        ee.setEnabled(false);

        ff.setEnabled(false);

       }

        if(temp==help)

        { //打开系统帮助文件 要查资料

        try

        {

        String filePath = "C:/WINDOWS/Help/calc.chm";

        Runtime.getRuntime().exec("cmd.exe /c "+filePath);

       }

        catch(Exception eeee)

        {

        System.out.println("打开系统的计算器出错");

        }

        }

        if(temp==about)

        {

        JOptionPane.showMessageDialog(frame," Java计算器\n 杨彩 制作\n\n /m/yangcai","关于计算器",JOptionPane.INFORMATION_MESSAGE); ;

        }

        if(temp==me)

        {

        try

        {

        Process p = Runtime.getRuntime().exec("explorer /m/yangcai");

        }

        catch(Exception eeee)

        {

        System.out.println("打开指定网页出错");

        }

        }

       try

        {

        if(temp==sixteen)

        {

        String hex=text.getText();

        int inthex=Integer.parseInt(hex,jin);//先把数变为进制

        text.setText(convert.decHex(inthex)) ;

        jin=;

        aa.setEnabled(true);

        bb.setEnabled(true);

        cc.setEnabled(true);

        dd.setEnabled(true);

        ee.setEnabled(true);

        ff.setEnabled(true);

        num2.setEnabled(true);

        num3.setEnabled(true);

        num4.setEnabled(true);

        num5.setEnabled(true);

        num6.setEnabled(true);

        num7.setEnabled(true);

        num8.setEnabled(true);

        num9.setEnabled(true);

        }

        if(temp==eight)

        {

        String oct =text.getText();

        int intoct=Integer.parseInt(oct,jin);

        text.setText(convert.decOct(intoct)) ;

        jin=8;

        aa.setEnabled(false);

        bb.setEnabled(false);

        cc.setEnabled(false);

        dd.setEnabled(false);

        ee.setEnabled(false);

        ff.setEnabled(false);

        num2.setEnabled(true);

        num3.setEnabled(true);

        num4.setEnabled(true);

        num5.setEnabled(true);

        num6.setEnabled(true);

        num7.setEnabled(true);

        num8.setEnabled(false);

        num9.setEnabled(false);

        }

        if(temp==two)

        {

        String bin=text.getText();

        int intbin=Integer.parseInt(bin,jin);

        text.setText(convert.decBin(intbin));

        jin=2;

        aa.setEnabled(false);

        bb.setEnabled(false);

        cc.setEnabled(false);

        dd.setEnabled(false);

        ee.setEnabled(false);

        ff.setEnabled(false);

        num2.setEnabled(false);

        num3.setEnabled(false);

        num4.setEnabled(false);

        num5.setEnabled(false);

        num6.setEnabled(false);

        num7.setEnabled(false);

        num8.setEnabled(false);

        num9.setEnabled(false);

        }

        if(temp==ten)

        {

        String dec=text.getText();

        int intdec=Integer.parseInt(dec,jin);

        // text.setText(convert.decDec(intdec)); //本句会把变成

        text.setText(intdec+"");

        jin=;

        aa.setEnabled(false);

        bb.setEnabled(false);

        cc.setEnabled(false);

        dd.setEnabled(false);

        ee.setEnabled(false);

        ff.setEnabled(false);

        num2.setEnabled(true);

        num3.setEnabled(true);

        num4.setEnabled(true);

        num5.setEnabled(true);

        num6.setEnabled(true);

        num7.setEnabled(true);

        num8.setEnabled(true);

        num9.setEnabled(true);

        }

        }

        catch(Exception ee)

        {

        System.out.println("转换出错,可能你没有输入任何字符");

        text.setText("转换出错");

        clear=false;

        }

        if(temp==backspace)

        { //退格

        String s = text.getText();

        text.setText("");

        for (int i = 0; i < s.length() - 1; i++)

        {

        char a = s.charAt(i);

        text.setText(text.getText() + a);

        }

        }

        if (temp==ce)

        {

        text.setText("0.");

        clear=true;

        first=1;

        }

        if (temp==c)

        {

        text.setText("0."); ;

        clear=true;

        first=1;

        }

        if(temp==num0)

        {

        if(clear==false)//判断是否点击了符号位

        text.setText("");

        text.setText(text.getText()+"0");

        }

        if(temp==num1)

        {

        if(clear==false)

        text.setText("");

        text.setText(text.getText()+"1");

        clear=true;//第二次不在清空(前二句)

        }

        if(temp==num2)

        {

        if(clear==false)

        text.setText("");

        text.setText(text.getText()+"2");

        clear=true;

        }

        if(temp==num3)

        {

        if(clear==false)

        text.setText("");

        text.setText(text.getText()+"3");

        clear=true;

        }

        if(temp==num4)

        {

        if(clear==false)

        text.setText("");

        text.setText(text.getText()+"4");

        clear=true;

        }

        if(temp==num5)

        {

        if(clear==false)

        text.setText("");

        text.setText(text.getText()+"5");

        clear=true;

        }

        if(temp==num6)

        {

        if(clear==false)

        text.setText("");

        text.setText(text.getText()+"6");

        clear=true;

        }

        if(temp==num7)

        {

        if(clear==false)

        text.setText("");

        text.setText(text.getText()+"7");

        clear=true;

        }

        if(temp==num8)

        {

        if(clear==false)

        text.setText("");

        text.setText(text.getText()+"8");

        clear=true;

        }

        if(temp==num9)

        {

        if(clear==false)

        text.setText("");

        text.setText(text.getText()+"9");

        clear=true;

        }

        if(temp==aa)

        {

        text.setText(text.getText()+"A");

        }

        if(temp==bb)

        {

        text.setText(text.getText()+"B");

        }

        if(temp==cc)

        {

        text.setText(text.getText()+"C");

        }

        if(temp==dd)

        {

        text.setText(text.getText()+"D");

        }

        if(temp==ee)

        {

        text.setText(text.getText()+"E");

        }

        if(temp==ff)

        {

        text.setText(text.getText()+"F");

        }

        if(temp==dian)

        {

        clickable=true;

        for (int i = 0; i < text.getText().length(); i++)

        if ('.' == text.getText().charAt(i))

        {

        clickable=false;

        break;

        } //第一层判断是否里面含有小数点;

        if(clickable==true)//第二坛判断

        text.setText(text.getText()+".");

        }

        try

        {

        if(temp==jia)

        { //加法

        qian=Double.parseDouble(text.getText());

        fuhao="+";

        clear=false;

        }

        if(temp==jian)

        {

        qian=Double.parseDouble(text.getText());

        fuhao="-";

        clear=false;

        ;

        }

        if(temp==cheng)

        {

        qian=Double.parseDouble(text.getText());

        fuhao="*";

        clear=false;

        }

        if(temp==chu)

        {

        qian=Double.parseDouble(text.getText());

        fuhao="/";

        clear=false;

        }

        if(temp==deng)

        {

        double ss=Double.parseDouble(text.getText());

        text.setText("");

        if(fuhao=="+")

        text.setText(qian+ss+"");

        if(fuhao=="-")

        text.setText(qian-ss+"");

        if(fuhao=="*")

        text.setText(qian*ss+"");

        if(fuhao=="/")

        text.setText(qian/ss+"");

        clear=false;//要清空前一次的数据

        ;

        }

        if(temp==kai)

        {

        String s = text.getText();

        if (s.charAt(0) == '-')

        {

        text.setText("负数不能开根号");

        }

        else

        text.setText(Double.toString(java.lang.Math.sqrt(Double.parseDouble(text.getText()))));

        clear=false;

        }

        if(temp==diao)

        {

        if (text.getText().charAt(0) == '0'&&text.getText().length() == 1)

        {

        text.setText("除数不能为零");

        }

        else

        {

        boolean isDec = true;

        int i, j, k;

        String s = Double.toString(1 / Double.parseDouble(text.getText()));

        for (i = 0; i < s.length(); i++)

        if (s.charAt(i) == '.')

        break;

        for (j = i + 1; j < s.length(); j++)

        if (s.charAt(j) != '0')

        {

        isDec = false;

        break;

        }

        if (isDec == true)

        {

        String stemp = "";

        for (k = 0; k < i; k++)

        stemp += s.charAt(k);

        text.setText(stemp);

        }

        else

        text.setText(s);

        }

        clear=false;

        }

        if(temp==qiuyi)

        {

        text.setText("0");

        clear=false;

        }

        if (temp == fu)

        { //导师,此方法参考书中例子

        boolean isNumber = true;

        String s = text.getText();

        for (int i = 0; i < s.length(); i++)

        if (! (s.charAt(i) >= '0' && s.charAt(i) <= '9' || s.charAt(i) == '.' ||

        s.charAt(i) == '-'))

        {

        isNumber = false;

        break;

        }

        if (isNumber == true)

        {

        //如果当前字符串首字母有'-'号,代表现在是个负数,再按下时,则将首符号去掉

        if (s.charAt(0) == '-')

        {

        text.setText("");

        for (int i = 1; i < s.length(); i++)

        {

        char a = s.charAt(i);

        text.setText(text.getText() + a);

        }

        }

        //如果当前字符串第一个字符不是符号,则添加一个符号在首字母处

        else

        text.setText('-' + s);

        }

        }

        }

        catch(Exception eee)

        {

        System.out.println("运算时,首先输入数字或字符");

        text.setText("运算出错");

        clear=false;

        }

       }

       class WindowDestroyer extends WindowAdapter

        { //退出窗口动作

        public void windowClosing(WindowEvent e)

        {

        System.exit(0);

        }

        }

       class objConversion

       { //导师,本进制类参考了CSMD类转换例子

        public void objConversion ()

        {

        }

        public String decDec (int decNum)

        { //

        String strDecNum = Integer.toString(decNum);

        for (int i = strDecNum.length(); i < 3; i++)

        {

        strDecNum = "0" + strDecNum;

        }

        // return strDecNum;

        return invert (strDecNum, 5);

        }

        public String decHex (int decNum)

        { // to

        String strHexNum = "";

        int currentNum = 0;

        while (decNum != 0)

        {

        if (decNum > )

        {

        currentNum = decNum % ;

        decNum /= ;

        }

        else

        {

        currentNum = decNum;

        decNum = 0;

        }

        switch (currentNum)

        {

        case : strHexNum += "F";

        break;

        case : strHexNum += "E";

        break;

        case : strHexNum += "D";

        break;

        case : strHexNum += "C";

        break;

        case : strHexNum += "B";

        break;

        case : strHexNum += "A";

        break;

        default: strHexNum += Integer.toString(currentNum);

        break;

        }

        }

        return invert (strHexNum, 2);

        }

        public String decOct (int decNum)

        { // to 8

        String strOctNum = "";

        while (decNum != 0)

        {

        if (decNum > 7)

        {

        strOctNum += Integer.toString(decNum % 8);

        decNum /= 8;

        }

        else

        {

        strOctNum += Integer.toString(decNum);

        decNum = 0;

        }

        }

        return invert (strOctNum, 3);

        }

        public String decBin (int decNum)

        { // to 2

        String strBinNum = "";

        while (decNum != 0)

        {

        if (decNum > 1)

        {

        strBinNum += Integer.toString(decNum % 2);

        decNum /= 2;

        }

        else

        {

        strBinNum += Integer.toString(decNum);

        decNum = 0;

        }

        }

        return invert (strBinNum, 8);

        }

        private String invert (String strNum, int minLength) //转换长度

        {

        String answer = "";

        int length = strNum.length();

        if (length < minLength)

        {

        for (int padding = (minLength - length); padding > 0; padding--)

        {

        answer += "0";

        }

        }

        for (int i = length; i > 0; i--)

        {

        answer += strNum.charAt (i - 1);

        }

        return answer;

        }

       }

       public static void main(String arg[])//产生窗口

        {

        calculator win = new calculator();

        win.setVisible(true);

        }

       }

Unity的拖拽与摆放问题(实现简易拼图小游戏)

       首先展示效果,视频中可以看到可以被拖动,并自动吸附至白色方框内,同时若目标区域内已有,可实现互换位置。实现此效果的步骤如下:

       新建项目,创建名为BG的Panel作为背景,下设名为PicBg的ios源码 社交image组件用于摆放,并添加GridLayoutGroup组件。圈出的部分代表每个方块的大小。

       接着,创建一个Prefab作为摆放的载体。此Prefab包含按钮和,通过识别鼠标所在父亲的位置进行判断,实现逻辑较为复杂,具体实现方式将在后续步骤中详解。

       复制9个Prefab,统一命名为Slot,并通过GridLayoutGroup调整它们的位置。为使PicBg大小适合放置9个Slot,PicBg的大小应调整为*。

       在PicBg下方创建摆放的位置,并统一大小为。最终效果如图所示。

       核心部分实现如下:引入UnityEngine.EventSystems库,利用IBeginDragHandler、BC平台源码IDragHandler、IEndDragHandler接口。实现鼠标点击时,跟随鼠标移动,并变更父节点以避免遮挡,不拖动时恢复原状态。

       接下来是位置互换实现。通过创建三层关系:->Item->Slot。确定目标位置和初始位置后,交换在各自父亲节点的位置,从而实现互换。具体代码实现和逻辑说明见代码注释。

       脚本挂载于上,结合Canvas Group组件用于识别下方元素类型,实现不同效果。至此,简单拼图小游戏完成。

Unity3D MMORPG背包系统的设计与实现详解

       Unity3D的MMORPG背包系统设计与实现详解

       在大型多人在线角色扮演游戏(MMORPG)中,背包系统扮演着核心角色,它允许玩家妥善管理其游戏内的物品。本文将深入剖析Unity3D中背包系统的设计和实现过程。

       首先,设计背包系统时,需关注关键要素。背包界面应简洁且功能齐全,包括足够的格子(根据物品种类和数量确定),可选的美观排列方式,清晰易辨的物品图标,以及详细物品信息的展示。此外,物品存储和管理也至关重要,包括区分背包和仓库的存储方式,以及整理、排序、搜索等操作的实现。

       在Unity3D中,实际实现背包系统的方法包括:创建背包界面的UI元素,如使用GridLayoutGroup布置格子,Image显示背景,Text显示数量,Button处理点击事件;利用List存储和管理物品,Item类封装物品信息,Inventory类承载背包数据;以及通过触发器实现物品的使用,如UseItem方法执行物品效果。

       总之,Unity3D的背包系统设计需要精细考虑用户交互体验,而实现则依赖于UGUI、List和触发器等工具。通过本文,开发者应能对在Unity3D中创建和管理MMORPG背包系统有更深入的理解。

Qt官方示例翻译--Group Box Example

       Qt官方示例翻译--Group Box Example

       这个示例教程对初学者非常友好,特别是对那些希望通过跟随小豆君学习Qt官方示例来提升技能的同学,让我们共同学习和进步。

       Group Box是Qt中用于合理组织和管理按钮交互的容器组件。它常用于将checkButton和radioButton归类到一个单独的组中,演示了四种不同类型的GroupBox:单选框盒、非互斥组、可勾选的单选框盒以及pushbutton盒。

       在Window类中,继承自QWidget,定义了四个函数来创建不同类型的GroupBox。构造函数中,运用QGridLayout布局管理这些GroupBox。每个函数负责创建并返回一个QGroupBox对象。

       第一个组框包含三个单选按钮,初始时默认为单选模式,通过设置第一个按钮为选中确保至少有一个按钮被选中。

       第二个组框为可检查状态,内部按钮需要先选中组框才能启用。它包含独立的单选按钮和复选框,确保始终有一个单选按钮被选中。

       第三个组框采用扁平样式,适用于特定类型的对话框,内部复选框默认为非独占模式。

       最后一个组框包含按钮,同样支持可校验功能,包括普通按钮、切换按钮和平面按钮,其中按钮可以展示弹出菜单。

       总结部分,虽然作者水平有限,翻译可能存在疏漏,期待读者指正。更新内容将根据需要不定期更新。本示例没有使用UI文件,着重展示了LineEdit的输入和输出特性,具有很高的学习价值。

java编译文本编辑器

       import java.awt.*;

       import java.awt.event.*;

       import javax.swing.*;

       public class EditorJFrame extends JFrame implements ActionListener, ItemListener, MouseListener

       {

        private JTextField text_size; //字号文本行

        private JCheckBox checkbox_bold, checkbox_italic; //粗体、斜体复选框

        private JButton button_cut, button_copy, button_paste; //剪切、复制、粘贴按钮

        private JTextArea textarea; //文本区

        private JPopupMenu popupmenu; //快捷菜单

        private JDialog dialog; //出错提示对话框

        private JLabel label_dialog; //对话框中的标签

        public EditorJFrame()

        {

        super("文本编辑器"); //默认BorderLayout布局

        this.setSize(,);

        this.setLocation(,);

        this.setDefaultCloseOperation(EXIT_ON_CLOSE); //单击窗口关闭按钮时,结束程序运行

        textarea = new JTextArea("TextArea");

        textarea.addMouseListener(this); //为文本区注册鼠标事件监听器

        this.add(textarea); //文本区添加到框架的中部

        JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT)); //面板为流布局,左对齐

        this.add(panel,"North"); //面板添加到框架的北部

        text_size = new JTextField("",);

        panel.add(text_size);

        text_size.addActionListener(this); //注册文本行的单击事件监听器

        checkbox_bold = new JCheckBox("粗体"); //复选框

        panel.add(checkbox_bold);

        checkbox_bold.addItemListener(this); //注册复选框的选择事件监听器

        checkbox_italic = new JCheckBox("斜体");

        panel.add(checkbox_italic);

        checkbox_italic.addItemListener(this);

        this.addmyMenu(); //调用自定义方法,添加菜单

        this.setVisible(true);

        }

        private void addmyMenu() //添加主菜单、快捷菜单、对话框

        {

        JMenuBar menubar = new JMenuBar(); //菜单栏

        this.setJMenuBar(menubar); //框架上添加菜单栏

        JMenu menu_file = new JMenu("文件"); //菜单

        menubar.add(menu_file); //菜单栏中加入菜单

        menu_file.add(new JMenuItem("打开")); //生成菜单项并加入到菜单

        menu_file.add(new JMenuItem("保存"));

        menu_file.addSeparator(); //加分隔线

        JMenuItem menuitem_exit = new JMenuItem("退出");

        menu_file.add(menuitem_exit);

        menuitem_exit.addActionListener(this); //为菜单项注册单击事件监听器

        JMenu menu_edit = new JMenu("编辑");

        menubar.add(menu_edit);

        JMenu menu_style = new JMenu("字形");

        menu_style.add(new JCheckBoxMenuItem("粗体")); //复选菜单项

        menu_style.add(new JCheckBoxMenuItem("斜体"));

        menu_edit.add(menu_style); //菜单加入到菜单中成为二级菜单

        JMenu menu_color = new JMenu("颜色");

        menu_edit.add(menu_color);

        ButtonGroup buttongroup = new ButtonGroup(); //按钮组

        JRadioButtonMenuItem rbmi_red = new JRadioButtonMenuItem("红",true); //单选菜单项

        buttongroup.add(rbmi_red); //单选菜单项添加到按钮组

        menu_color.add(rbmi_red); //单选菜单项添加到菜单

        JRadioButtonMenuItem rbmi_green = new JRadioButtonMenuItem("绿",true);

        buttongroup.add(rbmi_green);

        menu_color.add(rbmi_green);

        JRadioButtonMenuItem rbmi_blue = new JRadioButtonMenuItem("蓝",true);

        buttongroup.add(rbmi_blue);

        menu_color.add(rbmi_blue);

        menubar.add(new JMenu("帮助"));

        popupmenu = new JPopupMenu(); //弹出式菜单对象

        JMenuItem menuitem_cut = new JMenuItem("剪切");

        menuitem_cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));//设置快捷键Ctrl+X

        popupmenu.add(menuitem_cut); //加入剪切菜单项

        menuitem_cut.addActionListener(this);

        JMenuItem menuitem_copy = new JMenuItem("复制");

        menuitem_copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));//设置快捷键Ctrl+C

        popupmenu.add(menuitem_copy);

        menuitem_copy.addActionListener(this);

        JMenuItem menuitem_paste = new JMenuItem("粘贴");

        menuitem_paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK));//设置快捷键Ctrl+V

        popupmenu.add(menuitem_paste);

        menuitem_paste.addActionListener(this);

        textarea.add(popupmenu); //文本区添加快捷菜单

        dialog = new JDialog(this,"提示");

        dialog.setSize(,);

        label_dialog = new JLabel("",JLabel.CENTER);

        dialog.add(label_dialog);

        dialog.setDefaultCloseOperation(HIDE_ON_CLOSE); //单击对话框的关闭按钮时,隐藏对话框而不结束程序运行

        }

        public void actionPerformed(ActionEvent e) //单击事件处理程序

        {

        if(e.getActionCommand()=="退出") //不能用switch(int)语句

        System.exit(0); //单击菜单项时结束程序

        if(e.getActionCommand()=="剪切")

        textarea.cut(); //将选中文本剪切送系统剪贴板

        if(e.getActionCommand()=="复制")

        textarea.copy();

        if(e.getActionCommand()=="粘贴")

        textarea.paste();

        if(e.getSource()==text_size) //单击文本行时,改变字号

        {

        int size=0;

        try

        {

        size = Integer.parseInt(text_size.getText());

        if (size<=0 || size>)

        throw new Exception("SizeException"); //抛出异常对象

        java.awt.Font font = textarea.getFont();

        textarea.setFont(new Font(font.getName(),font.getStyle(),size));

        }

        catch(NumberFormatException nfe)

        {

        label_dialog.setText("\""+text_size.getText()+"\" 不能转换成整数,请重新输入!");

        dialog.setLocation(this.getX()+,this.getY()+);

        dialog.setVisible(true);

        }

        catch(Exception ex)

        {

        if (ex.getMessage()=="SizeException") //捕获自己抛出的异常对象

        {

        label_dialog.setText(size+" 字号不合适,请重新输入!");

        dialog.setLocation(this.getX()+,this.getY()+);

        dialog.setVisible(true);

        }

        }

        finally{ }

        }

        }

        public void itemStateChanged(ItemEvent e) //复选框选择事件处理程序

        { //实现ItemListener接口中的方法

        Font font = textarea.getFont();

        int style = font.getStyle();

        if (e.getSource()==checkbox_bold)

        style = style ^ 1; //整数的位运算,异或^

        if (e.getSource()==checkbox_italic)

        style = style ^ 2;

        textarea.setFont(new Font(font.getName(),style,font.getSize()));

        }

        public void mouseClicked(MouseEvent mec) //单击鼠标时触发

        { //实现MouseListener接口中的方法

        if (mec.getModifiers()==mec.BUTTON3_MASK) //单击的是鼠标右键

        popupmenu.show(textarea,mec.getX(),mec.getY());//在鼠标单击处显示快捷菜单

        }

        public void mousePressed(MouseEvent mep) { }

        public void mouseReleased(MouseEvent mer) { }

        public void mouseEntered(MouseEvent mee) { }

        public void mouseExited(MouseEvent mex) { }

        public void mouseDragged(MouseEvent med) { }

        public static void main(String arg[])

        {

        new EditorJFrame();

        }

       }

GridLayout和GridView的区别

       GridLayout初步研究:可以这么说这个布局绝对是开发者的福音,它大大简化了对复杂布局的处理,包括性能提高不是一倍两倍。它与GridView是完全不同的概念,GridView是一种适配器布局,它的继承关系是:ViewGroup > AdapterView > AbsListView > GridView,而GridLayout的继承关系是:ViewGroup > GridLayout,可以看出如果论辈分的话,GridLayout是GridView的爷爷辈的,但不是亲生爷爷哦,GridView的亲生爷爷是AdapterView,而GridLayout是AdapterView的兄弟。GridView的爷爷是适配器视图,当然爷爷的兄弟GridLayout就不应该是适配器视图了。 那么什么时候用孙子GridView什么时候用爷爷GridLayout呢?类似九宫格这种可以采用GridView。但是像Android系统自带的计算器的界面就不可能通过GridView实现,因为GridView所设置的每个Item都是一样的,无法实现类似计算器item大小不同功能,如果使用GridLayout实现那就简单多了。

相关推荐
一周热点