精华内容
下载资源
问答
  • 常见的窗体的特点
    2019-11-26 23:25:21

    窗体线程又称为UI线程(User Interface Thread)它通过多种空间接收用户输入并显示结果,UI线程执行消息循环任务:

    1. 循环查看消息队列
    2. 获得的消息匹配到函数事件
    3. 执行函数时间
      窗体程学的要素有窗体资源、消息队列和循环结构,它负责接收用户的输入并进行结果显示。

    多窗体管理

    常见的管理方法

    窗体管理方法特点
    在窗体事件中新建其他窗体对象方法最简单,反复创建销毁浪费资源,容易产生数据冲突
    使用公共类方法设置窗体显示或隐藏难度适中、切换灵活、线程控制复杂
    派生ApplicationContext类,编写窗体切换方法编写难度高、切换灵活

    Windows窗体资源

    程序的查个体对象显示都基于桌面窗口对象,系统为每个窗体资源对象分配唯一的句柄表示。窗体资源的关系有三种划分方式:

    1. Z-order描述窗体显示的前后关系
    2. 根据资源逻辑区域划分成父子关系
    3. 代码重用的窗体类间继承关系
      桌面窗体是其他窗体的最顶级父窗体,内核函数GetDesktopWindow可获取桌面窗体资源标识。

    用户输入与消息机制

    Windows 平台具有两种处理键键盘与鼠标输入的方式,分别是消息机制直接输入检测方式

    消息机制
    消息取值功能划分

    消息取值范围功能说明
    0~-x3FF专由Windows操作系统使用
    0x4FF~0x7FFF用户窗体类的自定义消息
    0x800~0xBFFF应用程序的自定义消息
    0xC000~0xFFFF应用程序的String消息
    大于0xFFFF系统保留

    Windows 具有一个系统消息队列按序存储全部消息,并根据规则再将消息投放到进程的消息队列中。系统为每一个窗体对象创建一个消息队列,消息经分配后由系统队列进入到窗体队列,每一个窗体对象配置一个窗体线程运行消息循环任务。消息循环反复检查消息队列中的消息,根据消息指匹配执行相应的分支代码。

    Windows就有两种先进先出的消息队列,分别是系统消息队列窗体对象消息队列。消息可有系统自动派送,也可由程序主动向其他程序发送,发送方式有两种,一种方式是将消息发送到先进先出的消息队列结构中,这些消息也叫队列化消息,用户设备输入消息等就属于队列化消息,一种方式是将消息直接发送到窗体函数中,这些消息叫非队列化消息。

    驱动程序将用户的键盘与鼠标的输入转化为消息结构放入系统消息队列,消息被分派到当前激活的窗体线程,窗体消息处理函数对消息进行匹配。消息队列是一个系统创建的内存对象,是动态变化的,应用程序会使用一个循环结构来处理消息队列,在每次循环时都用到GetMessage和DispatchMessage函数,GetMesage函数从当前消息队列前去除一个消息结构,DispatchMessage函数对消息进行匹配,使得系统去执行与消息对应的过程。而非队列化的消息则是直接发送到了窗体过程,表示用户激活了某个窗体。

    消息机制是Windows操作系统的重要内核组成,Windows能够为每个窗体应用程序维护一个消息队列。操作系统把用户的输入统一处理为消息,派送到当前激活窗体,隐藏状态的窗体不接收用户输入。 Windows仅有一个激活窗体,用户通过键盘、鼠标产生的消息都i发送到激活窗体,最顶窗体与激活窗体有时是不同的窗体。

    窗体消息重载

    DefWindowsProc 函数又称为消息回调函数,它处于窗体线程的消息循环结构内,虽然每个消息仅对应一次匹配,但是耗时的操作还是会影响后续消息的接收入处理。消息回调函数是窗体程序特有的,Windows平台还支持通用回调函数机制。

    默认的消息处理函数仅处理系统消息,工作线程向窗体发送自定义消息是一种有效的通信方式,SendMessage与PostMessag方法可向特定窗体发送自定义消息。窗体相应自定义消息方式是对Form类的DefWndProc成员函数进行重载。

    消息结构需要填充窗体对象的句柄值,内核函数FindWindow 查找特定窗体资源,EnumWindows函数能遍历所有窗体对象。

    更多相关内容
  • VB窗体和常用控件

    2022-06-13 14:46:23
    窗体常用属性名功能说明Name设置对象的名称所有控件都有Caption设置对象的标题Top窗体上边离屏幕上边的距离Left窗体左边离屏幕左边的距离Width对象的宽度Height对象的高度Enabled决定对象是否可用不可用时显示为灰色...

    窗体

    1. 窗体(属性)

    常用属性名

    功能

    说明

    Name

    设置对象的名称

    所有控件都有

    Caption

    设置对象的标题

    Top

    窗体上边离屏幕上边的距离

    Left

    窗体左边离屏幕左边的距离

    Width

    对象的宽度

    Height

    对象的高度

    Enabled

    决定对象是否可用

    不可用时显示为灰色

    Visible

    决定对象是否可见

    BackColor

    设置对象的背景色

    ForeColor

    设置对象的前景色

    如字体颜色

    Font

    设置对象的字体

    Name、Size、Bold、Italic、Underline、Strikethru

    Picture

    设置窗体背景图片

    对象名.Picture=LoadPicture(“图片路径”)

    MaxButton

    决定窗体上的最大化按钮是否可用

    如果两者都不可用,则只会出现关闭按钮

    MinButton

    决定窗体上的最小化按钮是否可用

    CotrolBox

    设置窗体的标题栏是否显示控制框

    BorderStyle

    窗体边界样式

    6种边框样式(0-5)

    1. 窗体(事件)
    2. 窗体(方法)

    练习:窗体、窗体事件、四季练习

    一般控件的使用

    1. label(标签)

    常用属性名

    功能

    说明

    Caption

    设置标签上显示的文字

    Alignment

    设置标签上文字对齐方式

    值为0-2

    AutoSize

    决定标签大小是否自动适应文字

    设为True为自动适应

    配色方案练习

    1. TextBox(文本框)

    常用属性名

    功能

    说明

    Alignment

    设置文本的对齐方式

    值为0到2

    Text

    文本框里显示的内容

    MultiLine

    是否允许多行显示

    ScrollBars

    设置是否显示滚动条

    MultiLine为true,值为0到3

     PasswordChar

    设置密码

    Locked

    是否允许输入

    只读属性

    SelStart

    选定的正文开始位置,起始为0

    SelLength

    选定的正文长度

    SelText

    选定的正文内容

    常用事件:Change

    常用方法名:SetFocus(设置焦点到文本框上)

    设置访问键:确定(&Y)(Alt+Y触发单击事件)

    练习:替换、简易文本编辑器、登录  

    1. CommandButton(命令按钮)

    常用属性名

    功能

    说明

    Caption

    设置按钮上显示的文字

    Style

    设置按钮的样式

    Picture

    设置按钮的背景图案

    只有Style为1时才起作用

    Default

    设置是否为默认确定按钮

    按Enter键触发Click事件

    Cancel

    设置是否为默认取消按钮

    按ESC键触发Click事件

     常用事件:Click(鼠标单击,不支持双击DbClick事件)

     设置访问键:确定(&Y)(Alt+Y触发单击事件)

     练习:你好、控件的显示与隐藏

    1. Timer(时钟)

    常用属性名

    功能

    说明

    Interval

    时钟触发的频率

    单位为毫秒

    Enabled

    是否可用

    通常用作时钟的开关

    常用事件名

    触发条件

    Timer

    按拟定的时间间隔由系统自动触发Timer事件,时钟唯一事件

    注意:时钟不工作有两种可能

    1. 将时钟的Enabled属性设置为False,这种方法最常用。
    2. 将时钟的Interval属性设置为0(默认)。

    练习:数字时钟、计时器(若加一个复位按钮)、会动的文字、加油

    选择类控件

    1. OptionButton(单选按钮)

    常用属性名

    功能

    说明

    Value

    设置是否被选中

    True为选中,默认为False

    Style

    设置样式

    同命令按钮

    事件:Click

    单选类控件数组创建方法、有什么特点?  

    单选类控件添加到Frame框架的几种方法

    练习:评论、评论(用控件数组完成)、时钟程序、求奇偶数的和

    1. CheckBox(检查框,也称复选框)

    常用属性名

    功能

    说明

    Value

    设置是否被选中

    未选中为0,选中为1,选中灰为2

    Style

    设置样式

    同单选按钮

    事件:Click

    练习:俱乐部、俱乐部(用控件数组完成)7、1、3

    1. ListBox(列表框)

    常用属性名

    功能

    说明

    List

    列表项

    对象名.List(i)

    ListIndex

    当前被选中的列表项索引值

    当前选中列表项的索引值,0开始,-1未选中任何列表项

    ListCount

    列表框中列表项的总项数

    Text

    当前被选中的列表项内容

    List1.Text

    Style

    设置样式

    0-2

    当前选中项:List1.ListIndex

    事件:Click

    常用方法名

    功能

    AddItem

    添加列表项

    List2.AddItem List1.List(List1.ListIndex)

    RemoveItem

    删除列表项

    List2.RemoveItem List2.ListIndex

    Clear

    清除所有列表项

    List1.Clear

     练习:删除、名单统计、课程选择、计算机比赛选拔、名单统计(0)、产生右移(多选)

    1. ComboBox(组合框)

    (Style属性)

    Style

    0

    1

    2

    样式

    下拉式组合框

    简单组合框

    下拉式列表框

    说明

    可输入、可下拉列表选择

    无下拉箭头,可输入、可选择

    不可输入、可下拉列表选择

    常用事件

    Click、DropDown(单击箭头)

    DbClick

    Click、DropDown

     练习:组合列表、加油站计费器

    1. HScrollBar(水平滚动条)与VScrollBar(垂直滚动条)

    常用属性名

    功能

    说明

    Value

    设置或返回滑块位置所对应的值

    Min≦Value≦Max

    Min

    滚动条左端(水平)或上端(垂直)的值

    默认为0

    Max

    滚动条右端(水平)或下端(垂直)的值

    默认为32767

    LargeChange

    设置点击滑块与两端按钮之间的空白区域时滑块移动的距离(值)

    默认为1

    SmallChange

    设置点击两端按钮时滑块移动的距离

    默认为1

    怎么控制滚动条中滑块的位置?

    常用事件名

    触发条件

    Scroll

    当拖动滑块时触发该事件

     Change

    当Value值发生变化时触发该事件

    练习:字体大小、图片大小、四季图片、运动

    1. Picture与Image

    属性窗口

    Picture(图片框):

            AutoSize   True:图片框调整大小以适应图片

                      False:则图片将被剪切(只有一部分图片可见)

    Image(图像框):

            Stretch    True:图片调整大小以适应图像框

                      False:图像框调整大小以适应图片

    代码

    加载图片   相对路径:对象名称.Picture = LoadPicture(App.Path & "\图片名.jpg")      

                        (图片路径和程序在同一个文件夹下)

               绝对路径:对象名称.Picture = LoadPicture()

    练习:四季

    语言基础

    一、数据类型(教室上)

      VB提供了11种基本数据类型:

       

    存储空间

    范围

    数值数据型

    字节型

    Byte

    1个字节

    0-255

    整型

    Integer

    %

    2个字节

    -32768-32767

    长整型

    Long

    &

    4个字节

    -2147483648-2147483647

    单精度型

    Single

    4个字节

    -3.402823E38-3.402823E38

    双精度型

    Double

    #

    8个字节

    -1.79769313D308-1.79769313D308

    货币型

    Currency

    @

    8个字节

    ——

    逻辑型

    Boolean

    2个字节

    True与False

    日期型

    Date(time)

    8个字节

    01/01/100—12/31/9999

    字符型

    String

    $

    与字符长度有关

    0-65535个字符

    对象型

    Object

    4个字节

    任何对象引用

    变体型

    Variant

    根据需要分配

    ——

    注意

    1. 逻辑型数据只有True和False两个值。在特殊情况下,逻辑型数据要转换成整型时,True转为-1,False转为0;若将其他类型转换成逻辑型时,非0数转换为True,0转换为False。
    2. 变体(Variant)是一种特殊的数据类型,是所有未定义变量的默认数据类型,它对数据的处理完全取决于程序上下文的需要,为VB的数据处理增加了智能性。它包括数值型、日期型、对象型、字符型等数据类型。

    练习:零或非零

    二、常量和变量(教室上)

    常量:

    在运行过程中其值始终保持不变的数据称为常量。常量可以分为直接常量和符号常量两种。

    直接常量:在程序中直接给出值的数据称为直接常量,它包括数值常量、字符常量、逻辑常量、日期常量。

    符号常量:

    系统符号常量:如vbRed

    用户自定义符号常量:用Const来声明

    变量:

    运行期间其值可以改变的数据称为变量。

    命名规则:

    以字母开头,由字母、数字或下划线组成,长度不超过255个字符,大小写不区分。

    ‚不能与VB中的保留字重名。

    ƒ最后一个字符可以是VB的类型符.     .

      量的定义:

    用语句进行显示声明,如Dim a As Integer

    ‚类型说明符定义,如Dim a%

    ƒ隐式声明:编写程序时,不声明变量直接使用,系统临时为新变量分配存储空间并使用。所有隐式声明的变量都是Variant数据类型。

    练习:圆、

    、运算符和表达式

    在VB中,表达式由运算符和操作数组合而成。运算符是表示实现某种运算的符号。运算符可以分为算术运算符、字符串运算符、关系运算符和逻辑运算符四类。

    运算符:

    算术运算符

    运算符

    含义

    优先级

    示例(a=3)

    结果

    ^

    乘方

    1

    a^2

    9

    -

    负号

    2

    -a

    -3

    *

    3

    a*a*a

    27

    /

    3

    10/a

    3.333333333333

    \

    整除

    4

    10\a

    3

    Mod

    取余

    5

    10 Mod a

    1

    +

    6

    10+a

    13

    -

    6

    a-10

    -7

    说明:算术运算符两边的操作数应该是数值型,若是数字字符或逻辑型,则强制转换为数值类型后再运算。

    练习:四则运算器、挑选偶数

    字符串运算符

    运算符

    作用

    区别

    示例

    结果

    &

    将两个字符串拼接起来

    先将操作数转换成字符,然后再连接

    12 & 34

    1234

    12 & "ab"

    12ab

    +

    两者都为字符串,直接连接

    "12" + "34"

    1234

    一个为数字字符串,一个为数字型,将字符串转换为数字型,然后算术加法运算

    123 + 45

    168

    一个为非数字字符型,一个为数值型,则出错

    "ab" + 34

    出错

    说明:使用运算符“&”时,变量与运算符“&”之间应加一个空格。这是因为符号“&”还是长整型的类型定义符,如果变量与符号“&”接在一起,VB系统先把它作为类型定义符处理,因而就会出现语法错误。

    关系运算符

    运算符

    含义

    示例

    结果

    =

    等于

    "ABCDE"="ABR"

    False

    >

    大于

    "ABCDE">"ABR"

    False

    >=

    大于等于

    "bc">="大小"

    False

    <

    小于

    23<3

    False

    <=

    小于等于

    "23"<="3"

    True

    <>

    不等于

    "abc"<>"ABC"

    True

    说明:如果两个操作数都是数值型,则按其大小比较。

          如果两个操作数都是字符型,则按字符的ASCII码值从左到右一一比较。

          汉字字符大于西文字符。

          关系运算符的优先级相同。

          

    练习:流量套餐  

    逻辑运算符

    运算符

    含义

    优先级

    说明

    示例

    结果

    Not

    取反

    1

    当操作数为假时,结果为真

    Not F

    T

    Not T

    F

    And

    2

    两边都真才 为真

    T And T

    T

    F And F

    F

    T And F

    F

    F And T

    F

    Or

    3

    两边都假才为假

    T Or T

    T

    F Or F

    F

    T Or F

    T

    F Or T

    T

    练习:海伦、

    优先级:算术运算符>字符运算符>关系运算符>逻辑运算符

    • 常用内部函数
    1. 格式和说明

       注意参数的个数及类型

       注意函数的定义域和值域。如Sqr(x)函数中的x必须大于等于0,Rnd()函数返回(0,1](包括0和不包括1)之间的双精度随机数。

    常用函数

    函数名

    功能

    示例

    结果

    Abs(x)

    求x的绝对值

    Abs(-2.5)

    2.5

    Rnd(x)

    产生一个在[0,1)区间均匀分布的随机数,每次的值都不同

    Rnd(x)

    0-1之间的数

    Int(x)

    求小于或等于x的最大整数

    Int(-3.5)

    -4

    Fix(x)

    求x的整数部分

    Fix(-3.5)

    -3

    Sqr(x)

    求平方根

    Sqr(9)

    3

    转换函数

    函数名

    功能

    实例

    结果

    Asc(S)

    字符串C中第一个字符的ASCII码

    Asc("A")

    65

    Chr(N)

    返回ASCII码值所代表的字符

    Chr(65)

    Val(S)

    数字字符转换为数值

    Val("123AB")

    123

    Str(N)

    数值转换为字符串(正数转换后有前导空格)

    Str(14)

    " 14"

    Log(N)

    求N的自然对数,N>0

    Log(2)

    0.6931471

    注意:(1)Asc("Abcd")值为:65(只取首字母的ASCII值)

         (2)Val("abc123")值为:0,Val("1.2sa10")值为1.2,Val()函数只将最前面的数字字符转换为数值。

    字符串函数

    函数名

    实例

    结果

    Left(S,N)

    Left("ABCDEFG",3)

    "ABC"

    Mid(S,N1,N2)

    Mid("ABCDG",2,3)

    "BCD"

    Right(S,N)

    Right("ABEFG",3)

    "EFG"

    Len(S)

    Len("AB高等")

    4

    日期函数

    函数名

    说明

    实例

    结果

    Date[()]

    返回系统日期

    Date()

    2017-9-12

    Day(C|N)

    返回日期代号(1-31)

    Day("2011,05,01")

    1

    Month(C|N)

    返回月份代号(1-31)

    Month("2011,05,01")

    5

    Time[()]

    返回系统时间

    Time

    11:26:53

    Year(C|D)

    返回年份号(1753-2078)

    Year(36)

    1900

    • 数据的输入和输出

    数据的输入:InputBox函数输入数据

               x=InputBox("请输入半径","计算圆的面积","20")

               注意:InputBox函数返回值为字符串,所以,此函数常跟Val联合使用。x,y为InputBox框左上角距离屏幕左侧与上侧的距离。

    数据的输出:MsgBox函数

                x=MsgBox("圆的面积为60","按钮","计算圆的面积")

                                        

                                     第二个参数

                                          

                   按钮数目值  图标类型值  默认按钮值   模式值

     (一)、图标数目相应值

    按钮数目

    0

    1

    2

    3

    4

    5

    • 、图标类型相应的值

    图标

    16

    32

    48

    64

    (三)、按钮返回值与按钮的对应关系

    返回值

    内部常量

    含义

    返回值

    内部常量

    含义

    1

    vbOK

    确定

    5

    vbIgnore

    忽略

    2

    vbCancel

    取消

    6

    vbYes

    3

    vbAbort

    终止

    7

    vbNo

    4

    vbRetry

    重试

    注意:函数返回值为用户选择的按钮的值。

    数据的输出:MsgBox命令(无返回值)

                MsgBox"圆的面积为60","按钮","计算圆的面积"    

    练习:选套餐,vb安装

    练习:随机偶数、倒序

    • VB程序基本结构

    If 语句

    格式一:If <条件> Then <语句>    行If语句不用结束语句

    格式二:If <条件> Then           块IF语句

                语句一

            Else

                语句二

            End If

    格式三:If <条件1> Then

               <语句1>

            ElseIf <条件2> Then

               <语句2>

            ElseIf <条件3> Then

               <语句3>

                   

            [Else

               <语句n>]

            End If

    练习:

    大巴车、网店、QQ、成绩转换

    Select Case 语句

    格式:Select Case 表达式

          [Case 表达式列表1

    <语句块1> ]

          [Case 表达式列表2

    <语句块2> ]

         ...

          [Case Else

    <语句块n> ]

          End Select

    注意:

    1. 表达式可以是数值表达式或字符串表达式,通常为变量。
    2. Case 1,2,3,"a","b","c"

       Case 1 To 10,"A" To "E"

       Case Is>0

    练习:

    所得税、月份天数、年月份天数、年月日、十二生肖

    For....Next 循环(计数循环)

    格式:  For <循环变量>= <循环变量初值> To <循环变量终值> [Step<步长>]

                    [<循环体语句序列>]

                    [Exit For]

            Next [<循环变量>]

    功能:

    说明:步长缺省时,则默认步长为1,循环步长不能为0,否则会“死循环”

    练习:随机求和1,2

    WhileWend循环(条件循环)

    注意:主要用于循环次数预先不能确定的循环结构。

    格式:While  <条件>

          [<语句序列>]

          Wend

    功能:按照条件是否成立执行循环。

    练习:求1-100的和、猜数 、年龄

    DoLoop循环(条件循环)

    格式1:Do [While|Until 条件]

                 [语句组]

                 [Exit Do]

            Loop

    注意:

    (1)Do循环不但可以用于循环次数预先不能确定的循环,还可以根据循环条件决定是否结束循环。

    (2)当While条件成立,或当Until条件不成立时,执行语句。(关键字While表示条件为真时循环执行,而Until表示条件为假时执行)

    格式1:Do

                 [语句组]

                 [Exit Do]

            Loop  [While|Until 条件]

    注意区别:格式2一定会执行1次循环体内的语句序列,而格式1在测试条件后,根据条件情况执行循环体。

    练习:s10,存钱  

    一维数组的定义和使用

    声明: Dim  a%(1 To 5) 或 Dim  a(1 To 5) As Integer

           Dim  a%(5) 或  Dim  a(5) As Integer

          ƒ Dim  A

             A=Array(1,2,3,4,5)

          动态数组(书P73)

    注意

    1. 以上三种声明方式的异同

    练习:sz列表、最值问题、sz最值问题

    • 常见算法

    解析法:利用数学计算实现问题的求解。

    练习:鸡兔同笼、一元二次方程求解

    穷举法(枚举法):将所有的方案都一一测试,找出符合要求的方案。

    练习:挑选偶数、完备数

    特殊数及素数:

    1. 完备数:指其各因子之和等于其本身的正整数。1、2、3是6的因子,6=1+2+3,所以6就是完备数。
    2. 回文数:回文数就是对称数,例如:121
    3. 素数:又称质数,是指除了1和该数本身之外,不能被其他任何整数整除的数,例如7,它不能被2,3,4,5,6整除。
    4. 水仙花数:指一个三位数其各位立方之和等于它本身。
    5. 同构数:是指一个数出现在它的平方数的右端。例如:5是25的右端,5就是同构数,25是625的右端,25也是同构数。

    练习:数字分离、水仙花数、回文数、素数和同构数。

    打印图形:

    一般算法

    For i=1 To n    打印的行数

      Print Tab();  每行打印的位置如Print Tab(9);在第九列输出

      For j=1 To m  每行中打印的个数

    打印内容;

      Next j

      Print         换行

    Next i

    排序:

    冒泡排序:

    概念:首先从数组的第一项(j)与下一项(j+1)进行比较,若下一项值比较小,则交换这两个位置的数据,使大的数在后方,这种操作反复进行直至数据组末尾,这样最后一个数据就是最大值了,然后再回到数组开头重复处理

    算法:

    For i=1 to n-1

       For j=1 to n-i

          If a(j)>a(j+1) Then

              T=a(j):a(j)=a(j+1):a(j+1)=T

          End If

       Next j

    Next i

    以69、 56、 18和10为例

    69

    第一趟

    56

    第二趟

    18

    第三趟

    10

    56

    18

    10

    18

    18

    10

    56

    56

    10

    69

    69

    69

    排序过程:

             第一轮:第一次:69   56   18   10    a(1)>a(2) 怎么把a(1)和a(2)的值进

                             a(1) a(2) a(3) a(4)            行交换?

            

                     第二次:56   69   18   10    a(2)>a(3) 怎么把a(2)和a(3)的值进

                             a(1) a(2) a(3) a(4)            行交换?

                

                     第三次:56   18   69   10    a(3)>a(4) 怎么把a(2)和a(3)的值进

                             a(1) a(2) a(3) a(4)            行交换?

          

                     结  果:56   18   10   69    

                             a(1) a(2) a(3) a(4)

             问:第一轮比较了几次?第一轮的比较有什么作用?

             第二轮:第一次:56   18   10   69

                             a(1) a(2) a(3) a(4)

                     第二次:18   56   10   69

                             a(1) a(2) a(3) a(4)

                     结  果:18   10   56   69

                             a(1) a(2) a(3) a(4)

             第三轮:第一次:18   10   56   69

                             a(1) a(2) a(3) a(4)

                     结  果:10   18   56   69

                             a(1) a(2) a(3) a(4)

    提问: 请回忆一下最大三位数那一题.....                

    选择排序:

    选择排序是用了求数组中最小值及其位置的算法来实现排序的。

    步骤:n个元素中找出最小的那个元素,记录下标,让这个元素与第一个元素比较,最小者是否为第一个元素,若不是则交换;第二轮从n-1个数据元素中找出最小的那个元素,记录它的下标,让这个元素与第二个元素比较,最小者是否为第二个元素,若不是则交换...以此类推。经过n-1轮的选择排序后,原来无序的序列就变成一个有序的序列。

    一般算法:

    For i=1 to n-1

    p=i

    For j=i+1 to n

        If a(p)>a(j) Then p=j

    Next j

    If p<>i Then

       T=a(p):a(p)=a(i):a(i)=t

    End If

    Next i

    以69、 56、 18、 10为例

    69

    第一趟

    10

    第二趟

    10

    第三趟

    10

    56

    56

    18

    18

    18

    18

    56

    56

    10

    69

    69

    69

       

    排序过程:

                      假设第一个位置的69为最小值,记录下标p

    第一轮:第一次:69   56   18   10     69与56 二者比较56为最小值,记录下标

          a(1) a(2) a(3) a(4)

    第二次:69   56   18   10     56与18 二者比较18为最小值,记录下标

          a(1) a(2) a(3) a(4)

    第三次:69   56   18   10     18与10 二者比较10为最小值,记录下标

          a(1) a(2) a(3) a(4)

    结  果:10   56   18   69  当前最小值与之前假设的最小值相等吗?不相等则

          a(1) a(2) a(3) a(4) 进行交换。

          假设最小值为?记录下标

    第二轮:第一次:10   56   18   69     56与18 二者比较18为最小值,记录下标

                    a(1) a(2) a(3) a(4)

            第二次:10   56   18   69     18与69 二者比较18为最小值,记录下标

                    a(1) a(2) a(3) a(4)

            结  果:10   18   56   69     把最小值与之前假设的最小值进行交换

                    a(1) a(2) a(3) a(4)  

                    假设最小值为?记录下标

    第三轮:第一次:10   18   56   69     56与69 二者比较56为最小值,记录下标

          a(1) a(2) a(3) a(4)

            结  果:10   18   56   69     把最小值与之前假设的最小值进行交换

                    a(1) a(2) a(3) a(4)

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

    万次阅读 多人点赞 2019-04-05 21:37:27
    Java SWing就是java提供的一个类库专门用于开发窗体程序的,相对于C#的winform,java swing的开发要比C#更加麻烦,他不像C#拥有可视化的界面编辑工具 而是需要像QT一样纯代码式GUI编程。java的好处就是通用性强,跨...

    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.cn,内含JavaWeb与Unity游戏开发实战教程,完全免费!,Csdn博客涉及的课程资料也在该网站上

    展开全文
  • winform窗体

    2019-08-13 11:02:03
    中文名 ...Windows窗体的一些重要特点如下: 功能强大 Windows窗体可用于设计窗体和可视控件,以创建丰富的基于Windows的应用程序。 操作方便 新的数据提供程序管理:数据提供程序管理提供易于连接O...

    WinForm是·Net开发平台中对Windows Form的一种称谓。
    中文名
    Winform
    特 点
    功能强大
    操作方便
    新的数据提供程序管理
    使用安全
    利用公共语言运行库的安全特性
    特点

    Windows窗体的一些重要特点如下:
    功能强大
    Windows窗体可用于设计窗体和可视控件,以创建丰富的基于Windows的应用程序。
    操作方便
    新的数据提供程序管理:数据提供程序管理提供易于连接OLEDB和odbc数据源的数据控件,包括Microsoft SQL Server、Microsoft Access、Jet、DB2以及Oracle等。
    使用安全
    Windows窗体充分利用公共语言运行库的安全特性。这就意味着,一切都可以通过Windows窗体来实现,包括在浏览器中运行的不可信控件和用户硬盘上安装的完全可信的应用程序。
    在这里插入图片描述
    优点
    控件灵活
    Windows窗体提供了一套丰富的控件,并且开发人员可以定义自己有特色的新的控件。
    WinForm控件 [1] 是指以输入或操作数据的对象。比如ComponentOne是.net平台下对数据和方法的封装。有自己的属性和方法。属性是控件数据的简单访问者。方法则是控件的一些简单而可见的功能。包含在 .NET Framework 中的 Windows窗体类旨在用于 GUI 开发。您可以轻松创建具有适应多变的商业需求所需的灵活性的命令窗口、按钮、菜单、工具栏和其他屏幕元素。
    数据管理
    方便的数据显示和操作:应用程序开发中最常见的情形之一是在窗体上显示数据。Windows窗体对数据库处理提供全面支持。可以访问数据库中的数据,并在窗体上显示和操作数据。
    向导明确
    向用户提供创建窗体、数据处理、打包和部署等的分布指导。

    展开全文
  • window窗体和控件分类

    2021-08-09 09:53:51
    Window、UserControl(用户控件,布局的时候像窗体那样布局就可以了)、Page把窗体以网页形式展现。而一个XAML页面里只能有一个顶级元素。而顶级元素里面只能有一个子元素。因此要有布局控件。 一.Window窗体属性 1...
  • 【C#之控制台与窗体应用程序】

    万次阅读 热门讨论 2016-02-18 16:56:29
    前言: 学习一个东西,是一个逐步的过程,如盲人摸象,这是一个过程,到了最后的最后,会认识全局。这是在学习C#视频的一个感受。...因为我接触了C#的窗体应用程序。感觉更加亲切了,因为之前的VB是窗台应
  • HTML窗体指南

    千次阅读 2016-02-28 21:17:32
    在这里我们使用一些常见的技巧:协调字体、大小和边框: intput , textarea { /* To make sure that all text fields have the same font settings By default, textareas have a monospace font */ ...
  • 对话框与多窗体设计

    2020-09-15 17:03:37
    对话框与多窗体设计 本章介绍对话框和多窗体设计,调用方式,数据传递等问题 - Qt提供的标准对话框的式样 - 自定义对话框的设计和调用 - 在一个应用程序中如何设计多种窗体,基于QDialog, QWidget, QMainWindow创建...
  • 1.Windows窗体应用程序的各种组件 2.windows窗体控件的主要类别和功能 3.Windows窗体应用程序处理事件的方法 4.添加并配置Windows窗体和控件 5.创建时间处理程序并监视程序 6.在程序运行时向窗体添加控件和事件...
  • 100 道 Linux 常见面试题,建议收藏!

    千次阅读 2021-08-23 00:43:35
    因为,命令行界面的软件通常需要用户记忆操作的命令,但是,由于其本身的特点,命令行界面要较图形用户界面节约计算机系统的资源。在熟记命令的前提下,使用命令行界面往往要较使用图形用户界面的操作速度要快。所以...
  • 网摘》窗体、子窗体

    千次阅读 2014-01-31 22:49:19
    VB6 MDI窗体 控件 其实Picture做为MDI窗体最佳容器,在设计MDI程序时,还是被很多程序员采用的方法。 1.建立MDI窗体;[工程]\[添加  MDI 窗体]  2.在MDI窗体上方画一个Picture1,因为Picture的Align默认是停靠在...
  • Java中的布局管理器类有:FlowLayout、BorderLayout、GridLayout、GridBagLayout等, 下面是他们的一些特点: CardLayout 将... 答:你是在学习swing组件吧?所谓布局管理器就是在JFrame或者JPanel上对于swing组件...
  • 10.1 Windows窗体编程基础 10.1.1 WinForms概述 #region Windows 窗体设计器生成的代码 /// <summary> /// 设计器支持所需的方法 - 不要 /// 使用代码编辑器修改此方法的内容。 ...
  • Form.ShowDialog()方法 (窗体显示为模态窗体) Form.Show方法()方法 (窗体显示为无模态窗体
  • 实现消息的分区、局部有序以及消息的重读机制,同一时候配合持久化方法可实现滑动窗体; 资源的管理主要借助于 Yarn ,利用消息队列的方式显现消息处理,同一时候通过备份方式显示数据局部容错; Yahoo Apache...
  • Linux常见面试题,一网打尽!

    千次阅读 2021-05-15 17:40:17
    Linux 文件系统的结构层次鲜明,就像一棵倒立的树,最顶层是其根目录: 常见目录说明: /bin: 存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里; /etc: 存放系统管理和配置文件; /home: 存放所有...
  • WinForm 窗体属性

    2016-12-04 22:14:00
    WinForm - C/S 客户端 B/S 网页端 客户端应用程序 - 是需要安装在用户电脑上才可以使用的程序特点:不需要联网...常见窗口类型:1、记事本 2、计算器 3、杀毒软件、QQ这种漂亮的窗体 4、不规则窗体 窗口布局: (...
  • UI框架中UI窗体的“层级管理”,最核心的问题是如何进行窗体的显示管理。窗体(预设)的显示我们前面定义了三种类型: 普通、隐藏其他、反向切换。 “普通显示”模式允许多个窗体同时显示,这种类型应用最多。 ...
  •  应用程序数据模块(Application DataModule)是一个由uniGUI在运行时额外自动生成的,有如下几个特点: 它在应用程序运行初始化时注册生成的 它是在每个会话的开始或按需创建的(依据属性MainModule....
  • C# 单例模式和窗体的单例打开方法

    千次阅读 2018-03-22 15:33:00
    C# 单例模式和窗体的单例打开方法   第一种最简单,但没有考虑线程安全,在多线程时可能会出问题,不过俺从没看过出错的现象,表鄙视我…… public class Singleton{ private static Singleton _instance ...
  • 重要: GUI线程和辅助线程如前所述,每个程序在启动时都有一个线程。这个线程被称为“主线程”(在Qt应用程序中也称为“GUI线程”)。Qt GUI必须在这个线程中运行。所有小部件和几个相关类(例如QPixmap)都不能在辅助...
  • 窗体

    2014-05-09 00:31:00
    常见的图形设备有显示器,打印机。 Winform封装了GDI底层的接口,提供一组面向对象的接口,供我们使用 Partial关键字,用他修饰的类叫分布类/部分类,指示该类是整个类的一部分 Text是个字符串,表示关联文本 ...
  • 文章目录1. Android虚拟机:Dalvik和ART1.1 JVM与Dalvik... 常见内存分析工具2.1 Android Profiler2.1.1 Allocation Tracker2.1.2 Heap Dump2.2 MAT2.3 LeakCanary 在Android性能优化(1):常见内存泄漏与优化(一...
  • 本文共 2W+字,分别从 Linux 概述、磁盘、目录、文件、安全、语法级、实战、文件管理命令、文档编辑命令、磁盘管理命令、网络通讯命令、系统管理命令、备份压缩命令等方面拆解 Linux 常见面试问题。可以先收藏,慢慢...
  • 但是,常见的情况是,Microsoft 使用了同一个名称来在看上去类似的环境中指代不同的事物,因此,必须谨慎从事,并阅读附属细则。下面介绍开发 Web 窗体控件的五种方法。 第一种选择是从 System.Web.UI.Control ...
  • linux运维必备,100道常见面试题

    千次阅读 2021-12-24 09:43:15
    本文共 2W+字,分别从 Linux 概述、磁盘、目录、文件、安全、语法级、实战、文件管理命令、文档编辑命令、磁盘管理命令、网络通讯命令、系统管理命令、备份压缩命令等方面拆解 Linux 常见面试问题。可以先收藏,慢慢...
  • VB 窗体的设计及应用

    2014-05-08 23:39:22
     掌握窗体设计 100 u   掌握多重窗体的设计与应用 u   掌握响应鼠标与键盘事件 上机运行了局如下:画直线,在鼠标被按下的位置画一个端点,在鼠标松开的位置画另一个端点。   重点:窗体及...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,095
精华内容 3,238
热门标签
关键字:

常见的窗体的特点