<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 布局管理 > 原文: [http://zetcode.com/gui/vbgtk/layoutmanagement/](http://zetcode.com/gui/vbgtk/layoutmanagement/) 在本章中,我們將展示如何在窗口或對話框中布置窗口小部件。 在設計應用的 GUI 時,我們決定要使用哪些小部件以及如何在應用中組織這些小部件。 為了組織窗口小部件,我們使用專門的不可見窗口小部件,稱為布局容器。 在本章中,我們將提到`Alignment`,`Fixed`,`VBox`和`Table`。 ## `Fixed` `Fixed`容器將子窗口小部件放置在固定位置并具有固定大小。 此容器不執行自動布局管理。 在大多數應用中,我們不使用此容器。 我們在某些專業領域使用它。 例如游戲,使用圖表的專用應用,可以移動的可調整大小的組件(如電子表格應用中的圖表),小型教育示例。 ```vb ' ZetCode Mono Visual Basic GTK# tutorial ' ' In this program, we lay out widgets ' using absolute positioning ' ' author jan bodnar ' last modified May 2009 ' website www.zetcode.com Imports Gtk Public Class GtkVBApp Inherits Window Private Dim rotunda As Gdk.Pixbuf Private Dim bardejov As Gdk.Pixbuf Private Dim mincol As Gdk.Pixbuf Public Sub New MyBase.New("Fixed") Me.InitUI Me.SetDefaultSize(300, 280) Me.SetPosition(WindowPosition.Center) AddHandler Me.DeleteEvent, AddressOf Me.OnDelete Me.ShowAll End Sub Private Sub InitUI Me.ModifyBg(StateType.Normal, New Gdk.Color(40, 40, 40)) Try bardejov = New Gdk.Pixbuf("bardejov.jpg") rotunda = New Gdk.Pixbuf("rotunda.jpg") mincol = New Gdk.Pixbuf("mincol.jpg") Catch e As Exception Console.WriteLine("Cannot load images") Console.WriteLine(e.Message) Environment.Exit(1) End Try Dim image1 As New Image(bardejov) Dim image2 As New Image(rotunda) Dim image3 As New Image(mincol) Dim fixed As New Fixed fixed.Put(image1, 20, 20) fixed.Put(image2, 40, 160) fixed.Put(image3, 170, 50) Me.Add(fixed) End Sub Sub OnDelete(ByVal sender As Object, _ ByVal args As DeleteEventArgs) Application.Quit End Sub Public Shared Sub Main Application.Init Dim app As New GtkVBApp Application.Run End Sub End Class ``` 在我們的示例中,我們在窗口上顯示了三個小圖像。 我們明確指定放置這些圖像的 x,y 坐標。 ```vb vbnc -r:/usr/lib/mono/gtk-sharp-2.0/gtk-sharp.dll -r:/usr/lib/mono/gtk-sharp-2.0/gdk-sharp.dll absolute.vb ``` 在此示例中,我們還使用`gdk-sharp`程序集。 ```vb Me.ModifyBg(StateType.Normal, New Gdk.Color(40, 40, 40)) ``` 為了獲得更好的視覺體驗,我們將背景色更改為深灰色。 ```vb bardejov = New Gdk.Pixbuf("bardejov.jpg") ``` 我們將圖像從磁盤加載到`Gdk.Pixbuf`對象。 ```vb Dim image1 As New Image(bardejov) Dim image2 As New Image(rotunda) Dim image3 As New Image(mincol) ``` `Image`是用于顯示圖像的小部件。 它在構造器中使用`Gdk.Pixbuf`對象。 ```vb Dim fixed As New Fixed ``` 我們創建`Fixed`容器。 ```vb fixed.Put(image1, 20, 20) ``` 我們將第一個圖像放置在`x = 20`,`y = 20`坐標處。 ```vb Me.Add(fixed) ``` 最后,我們將`Fixed`容器添加到窗口中。 ![Fixed](https://img.kancloud.cn/e0/73/e073300df12029fbff7cbb73a9b6288e_308x308.jpg) 圖:固定 ## `Alignment` `Alignment`容器控制其子窗口小部件的對齊方式和大小。 ```vb ' ZetCode Mono Visual Basic GTK# tutorial ' ' In this program, we position two buttons ' in the bottom right corner of the window. ' We use horizontal and vertical boxes. ' ' author jan bodnar ' last modified May 2009 ' website www.zetcode.com Imports Gtk Public Class GtkVBApp Inherits Window Public Sub New MyBase.New("Buttons") Me.InitUI Me.SetDefaultSize(260, 150) Me.SetPosition(WindowPosition.Center) AddHandler Me.DeleteEvent, AddressOf Me.OnDelete Me.ShowAll End Sub Private Sub InitUI Dim vbox As New VBox(False, 5) Dim hbox As New HBox(True, 3) Dim valign As New Alignment(0, 1, 0, 0) vbox.PackStart(valign) Dim ok As New Button("OK") ok.SetSizeRequest(70, 30) Dim close As New Button("Close") hbox.Add(ok) hbox.Add(close) Dim halign As New Alignment(1, 0, 0, 0) halign.Add(hbox) vbox.PackStart(halign, False, False, 3) Me.Add(vbox) End Sub Sub OnDelete(ByVal sender As Object, _ ByVal args As DeleteEventArgs) Application.Quit End Sub Public Shared Sub Main Application.Init Dim app As New GtkVBApp Application.Run End Sub End Class ``` 在代碼示例中,我們在窗口的右下角放置了兩個按鈕。 為此,我們使用一個水平框和一個垂直框以及兩個對齊容器。 ```vb Dim valign As New Alignment(0, 1, 0, 0) ``` 這會將子窗口小部件置于底部。 ```vb vbox.PackStart(valign) ``` 在這里,我們將`Alignment`小部件放置到垂直框中。 ```vb Dim hbox As New HBox(True, 3) ... Dim ok As New Button("OK") ok.SetSizeRequest(70, 30) Dim close As New Button("Close") hbox.Add(ok) hbox.Add(close) ``` 我們創建一個水平框,并在其中放置兩個按鈕。 ```vb Dim halign As New Alignment(1, 0, 0, 0) halign.Add(hbox) vbox.PackStart(halign, False, False, 3) ``` 這將創建一個對齊容器,它將其子窗口小部件放在右側。 我們將水平框添加到對齊容器中,然后將對齊容器包裝到垂直框中。 我們必須記住,對齊容器僅包含一個子窗口小部件。 這就是為什么我們必須使用盒子。 ![Buttons](https://img.kancloud.cn/17/88/1788e8f93c025ce15e98e847293f9d04_268x178.jpg) 圖:按鈕 ## 計算器骨架 `Table`小部件按行和列排列小部件。 ```vb ' ZetCode Mono Visual Basic GTK# tutorial ' ' In this program we create a skeleton of ' a calculator. We use the Table widget. ' ' author jan bodnar ' last modified May 2009 ' website www.zetcode.com Imports Gtk Public Class GtkVBApp Inherits Window Public Sub New MyBase.New("Calculator") Me.InitUI Me.SetDefaultSize(300, 250) Me.SetPosition(WindowPosition.Center) AddHandler Me.DeleteEvent, AddressOf Me.OnDelete Me.ShowAll End Sub Private Sub InitUI Dim vbox As New VBox(False, 2) Dim mb As New MenuBar Dim filemenu As New Menu Dim file As MenuItem = New MenuItem("File") file.Submenu = filemenu mb.Append(file) vbox.PackStart(mb, False, False, 0) Dim table As New Table(5, 4, True) table.Attach(New Button("Cls"), 0, 1, 0, 1) table.Attach(New Button("Bck"), 1, 2, 0, 1) table.Attach(New Label(), 2, 3, 0, 1) table.Attach(New Button("Close"), 3, 4, 0, 1) table.Attach(New Button("7"), 0, 1, 1, 2) table.Attach(New Button("8"), 1, 2, 1, 2) table.Attach(New Button("9"), 2, 3, 1, 2) table.Attach(New Button("/"), 3, 4, 1, 2) table.Attach(New Button("4"), 0, 1, 2, 3) table.Attach(New Button("5"), 1, 2, 2, 3) table.Attach(New Button("6"), 2, 3, 2, 3) table.Attach(New Button("*"), 3, 4, 2, 3) table.Attach(New Button("1"), 0, 1, 3, 4) table.Attach(New Button("2"), 1, 2, 3, 4) table.Attach(New Button("3"), 2, 3, 3, 4) table.Attach(New Button("-"), 3, 4, 3, 4) table.Attach(New Button("0"), 0, 1, 4, 5) table.Attach(New Button("."), 1, 2, 4, 5) table.Attach(New Button("="), 2, 3, 4, 5) table.Attach(New Button("+"), 3, 4, 4, 5) vbox.PackStart(New Entry, False, False, 0) vbox.PackEnd(table, True, True, 0) Me.Add(vbox) End Sub Sub OnDelete(ByVal sender As Object, _ ByVal args As DeleteEventArgs) Application.Quit End Sub Public Shared Sub Main Application.Init Dim app As New GtkVBApp Application.Run End Sub End Class ``` 我們使用`Table`小部件創建一個計算器框架。 ```vb Dim table As New Table(5, 4, True) ``` 我們創建一個具有 5 行 4 列的表小部件。 第三個參數是同質參數。 如果設置為`true`,則表中的所有小部件都具有相同的大小。 所有窗口小部件的大小等于表容器中最大的窗口小部件。 ```vb table.Attach(New Button("Cls"), 0, 1, 0, 1) ``` 我們在表格容器上附加一個按鈕。 到表格的左上方單元格。 前兩個參數是單元格的左側和右側,后兩個參數是單元格的頂部和左側。 ```vb vbox.PackEnd(table, True, True, 0) ``` 我們將表格小部件打包到垂直框中。 ![Calculator skeleton](https://img.kancloud.cn/a6/d0/a6d0115289701e120b175d92392d0667_308x278.jpg) 圖:計算機骨架 ## 窗口 接下來,我們將創建一個更高級的示例。 我們顯示一個窗口,可以在 JDeveloper IDE 中找到它。 ```vb ' ZetCode Mono Visual Basic GTK# tutorial ' ' This is a more complicated layout example. ' We use Alignment and Table widgets. ' ' author jan bodnar ' last modified May 2009 ' website www.zetcode.com Imports Gtk Public Class GtkVBApp Inherits Window Public Sub New MyBase.New("Windows") Me.InitUI Me.SetDefaultSize(300, 250) Me.SetPosition(WindowPosition.Center) AddHandler Me.DeleteEvent, AddressOf Me.OnDelete Me.ShowAll End Sub Private Sub InitUI Me.BorderWidth = 15 Dim table As New Table(8, 4, False) table.ColumnSpacing = 3 Dim title As New Label("Windows") Dim halign As New Alignment(0, 0, 0, 0) halign.Add(title) table.Attach(halign, 0, 1, 0, 1, AttachOptions.Fill, _ AttachOptions.Fill, 0, 0) Dim frame As New Frame table.Attach(frame, 0, 2, 1, 3, AttachOptions.Fill Or AttachOptions.Expand, _ AttachOptions.Fill Or AttachOptions.Expand, 1, 1) Dim activate As New Button("Activate") activate.SetSizeRequest(50, 30) table.Attach(activate, 3, 4, 1, 2, AttachOptions.Fill, _ AttachOptions.Shrink, 1, 1) Dim valign As New Alignment(0, 0, 0, 0) Dim close As New Button("Close") close.SetSizeRequest(70, 30) valign.Add(close) table.SetRowSpacing(1, 3) table.Attach(valign, 3, 4, 2, 3, AttachOptions.Fill, _ AttachOptions.Fill Or AttachOptions.Expand, 1, 1) Dim halign2 As New Alignment(0, 1, 0, 0) Dim help As New Button("Help") help.SetSizeRequest(70, 30) halign2.Add(help) table.SetRowSpacing(3, 6) table.Attach(halign2, 0, 1, 4, 5, AttachOptions.Fill, _ AttachOptions.Fill, 0, 0) Dim ok As New Button("OK") ok.SetSizeRequest(70, 30) table.Attach(ok, 3, 4, 4, 5, AttachOptions.Fill, _ AttachOptions.Fill, 0, 0) Me.Add(table) End Sub Sub OnDelete(ByVal sender As Object, _ ByVal args As DeleteEventArgs) Application.Quit End Sub Public Shared Sub Main Application.Init Dim app As New GtkVBApp Application.Run End Sub End Class ``` 該代碼示例顯示了如何在 GTK# 中創建類似的窗口。 ```vb Dim table As New Table(8, 4, False) table.ColumnSpacing = 3 ``` 該示例基于`Table`容器。 列之間將有 3px 的間隔。 ```vb Dim title As New Label("Windows") Dim halign As New Alignment(0, 0, 0, 0) halign.Add(title) table.Attach(halign, 0, 1, 0, 1, AttachOptions.Fill, _ AttachOptions.Fill, 0, 0) ``` 這段代碼創建了一個向左對齊的標簽。 標簽放置在`Table`容器的第一行中。 ```vb Dim frame As New Frame table.Attach(frame, 0, 2, 1, 3, AttachOptions.Fill Or AttachOptions.Expand, _ AttachOptions.Fill Or AttachOptions.Expand, 1, 1) ``` 框架視圖小部件跨越兩行兩列。 我們使小部件不可編輯并隱藏光標。 ```vb Dim valign As New Alignment(0, 0, 0, 0) Dim close As New Button("Close") close.SetSizeRequest(70, 30) valign.Add(close) table.SetRowSpacing(1, 3) table.Attach(valign, 3, 4, 2, 3, AttachOptions.Fill, _ AttachOptions.Fill Or AttachOptions.Expand, 1, 1) ``` 我們將關閉按鈕放在框架小部件旁邊,進入第四列。 (我們從零開始計數)將按鈕添加到對齊小部件中,以便可以將其對齊到頂部。 ![Windows](https://img.kancloud.cn/17/49/1749f0ab32758dc20835bdb30e297d3f_308x278.jpg) 圖:窗口 在 Visual Basic GTK# 教程的這一部分中,我們提到了小部件的布局管理。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看