<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之旅 廣告
                # Java Gnome 中的高級小部件 > 原文: [http://zetcode.com/gui/javagnome/advancedwidgets/](http://zetcode.com/gui/javagnome/advancedwidgets/) 在 Java Gnome 編程教程的這一部分中,我們將介紹一些更高級的小部件。 ## `TexView` `TexView`小部件用于顯示和編輯多行文本。 `TextView`小部件也具有 MVC 設計。 TextView 代表視圖組件,`TexBuffer`代表模型組件。 `TextBuffer`用于處理文本數據。 `TextTag`是可以應用于文本的屬性。 `TextIter`表示文本中兩個字符之間的位置。 所有使用文本的操作都是使用文本迭代器完成的。 `textview.java` ```java package com.zetcode; import org.gnome.gdk.Event; import org.gnome.gtk.Gtk; import org.gnome.gtk.TextBuffer; import org.gnome.gtk.TextIter; import org.gnome.gtk.TextTag; import org.gnome.gtk.TextView; import org.gnome.gtk.Widget; import org.gnome.gtk.Window; import org.gnome.gtk.WindowPosition; import org.gnome.gtk.WrapMode; import org.gnome.pango.FontDescription; import org.gnome.pango.Style; /** * ZetCode Java Gnome tutorial * * This program demonstrates the * TextView widget. * * @author jan bodnar * website zetcode.com * last modified March 2009 */ public class GTextView extends Window { public GTextView() { setTitle("TextView"); initUI(); connect(new Window.DeleteEvent() { public boolean onDeleteEvent(Widget source, Event event) { Gtk.mainQuit(); return false; } }); setDefaultSize(250, 200); setPosition(WindowPosition.CENTER); showAll(); } public void initUI() { final TextView view; final FontDescription desc; final TextBuffer buffer; final TextTag colorText, italics, background, mleft; TextIter pointer; view = new TextView(); desc = new FontDescription("Sans, 10"); view.modifyFont(desc); buffer = new TextBuffer(); colorText = new TextTag(); colorText.setForeground("blue"); italics = new TextTag(); italics.setStyle(Style.ITALIC); background = new TextTag(); background.setBackground("lightgray"); mleft = new TextTag(); mleft.setLeftMargin(8); pointer = buffer.getIterStart(); buffer.insert(pointer, "Plain text \n"); buffer.insert(pointer, "Colored text\n", new TextTag[] {colorText, mleft}); buffer.insert(pointer, "Text with colored background\n", background); buffer.insert(pointer, "Text in italics", italics); view.setBuffer(buffer); view.setPaddingAboveParagraph(5); add(view); } public static void main(String[] args) { Gtk.init(args); new GTextView(); Gtk.main(); } } ``` 該示例顯示了一些應用了不同`TextTags`的文本。 ```java view = new TextView(); ``` TextView 小部件已創建。 ```java desc = new FontDescription("Sans, 10"); view.modifyFont(desc); ``` 我們將`TextView`的字體設置為 Sans 10。 ```java colorText = new TextTag(); colorText.setForeground("blue"); ``` `TextTag`小部件已創建。 如果應用,此標簽會將文本的顏色設置為藍色。 ```java buffer.insert(pointer, "Text in italics", italics); ``` 在這里,我們為指定的文本應用斜體文本標簽。 ![TextView](https://img.kancloud.cn/2a/06/2a0622b570e3061dbdae35289756f18f_256x225.jpg) 圖:`TextView` ## `ListView` 在下面的示例中,我們在列表視圖模式下使用`TreeView`小部件。 `ListStore`用于存儲數據。 `listview.java` ```java package com.zetcode; import org.gnome.gdk.Event; import org.gnome.gtk.CellRendererText; import org.gnome.gtk.DataColumn; import org.gnome.gtk.DataColumnString; import org.gnome.gtk.Gtk; import org.gnome.gtk.ListStore; import org.gnome.gtk.Statusbar; import org.gnome.gtk.TreeIter; import org.gnome.gtk.TreePath; import org.gnome.gtk.TreeView; import org.gnome.gtk.TreeViewColumn; import org.gnome.gtk.VBox; import org.gnome.gtk.Widget; import org.gnome.gtk.Window; import org.gnome.gtk.WindowPosition; /** * ZetCode Java Gnome tutorial * * This program demonstrates the * TreeView widget in listview mode. * * @author jan bodnar * website zetcode.com * last modified March 2009 */ public class GListView extends Window { private Actress[] actresses = { new Actress("Jessica Alba", "Pomona", 1981), new Actress("Sigourney Weaver", "New York", 1949), new Actress("Angelina Jolie", "Los Angeles", 1975), new Actress("Natalie Portman", "Jerusalem", 1981), new Actress("Rachel Weissz", "London", 1971), new Actress("Scarlett Johansson", "New York", 1984) }; private Statusbar statusbar; public GListView() { setTitle("ListView"); initUI(); connect(new Window.DeleteEvent() { public boolean onDeleteEvent(Widget source, Event event) { Gtk.mainQuit(); return false; } }); setDefaultSize(350, 300); setPosition(WindowPosition.CENTER); showAll(); } public void initUI() { final TreeView view; final ListStore model; TreeIter row; CellRendererText renderer; TreeViewColumn column; final DataColumnString nameCol; final DataColumnString placeCol; final DataColumnString yearCol; statusbar = new Statusbar(); model = new ListStore(new DataColumn[] { nameCol = new DataColumnString(), placeCol = new DataColumnString(), yearCol = new DataColumnString(), }); for (Actress act : actresses) { row = model.appendRow(); model.setValue(row, nameCol, act.name); model.setValue(row, placeCol, act.place); model.setValue(row, yearCol, String.valueOf(act.year)); } view = new TreeView(model); column = view.appendColumn(); column.setTitle("Name"); renderer = new CellRendererText(column); renderer.setText(nameCol); column = view.appendColumn(); column.setTitle("Place"); renderer = new CellRendererText(column); renderer.setText(placeCol); column = view.appendColumn(); column.setTitle("Year"); renderer = new CellRendererText(column); renderer.setText(yearCol); view.connect(new TreeView.RowActivated() { public void onRowActivated(TreeView treeView, TreePath treePath, TreeViewColumn treeViewColumn) { final TreeIter row; final String place; final String name; final String year; final String text; row = model.getIter(treePath); place = model.getValue(row, placeCol); name = model.getValue(row, nameCol); year = model.getValue(row, yearCol); text = name + ", " + place + ", " + year; statusbar.setMessage(text); } }); VBox vbox = new VBox(false, 0); vbox.packStart(view); vbox.packStart(statusbar, false, false, 0); add(vbox); } class Actress { public String name; public String place; public int year; Actress(String name, String place, int year) { this.name = name; this.place = place; this.year = year; } } public static void main(String[] args) { Gtk.init(args); new GListView(); Gtk.main(); } } ``` 在我們的示例中,我們在`TreeView`小部件中顯示了六個女演員的列表。 每行分別顯示名稱,出生地和出生年份。 ```java class Actress { public String name; public String place; public int year; ... } ``` `Actress`類用于存儲有關女演員的數據。 ```java model = new ListStore(new DataColumn[] { nameCol = new DataColumnString(), placeCol = new DataColumnString(), yearCol = new DataColumnString(), }); ``` 這些行聲明模型具有三個字符串數據列。 ```java for (Actress act : actresses) { row = model.appendRow(); model.setValue(row, nameCol, act.name); model.setValue(row, placeCol, act.place); model.setValue(row, yearCol, String.valueOf(act.year)); } ``` 該模型充滿了女演員的數據。 ```java column = view.appendColumn(); column.setTitle("Name"); renderer = new CellRendererText(column); renderer.setText(nameCol); ``` 將創建一個帶有`"Name"`標題的新列。 每列都有一個單元格渲染器。 單元格渲染器負責顯示數據。 在我們的情況下,我們有最常用的單元格渲染器`CellRendererText`。 顧名思義,它在`TreeViewColumn`中顯示文本數據。 ```java row = model.getIter(treePath); place = model.getValue(row, placeCol); name = model.getValue(row, nameCol); year = model.getValue(row, yearCol); text = name + ", " + place + ", " + year; statusbar.setMessage(text); ``` 如果雙擊某個項目,則會在狀態欄中顯示整行。 ![ListView](https://img.kancloud.cn/c8/88/c888f285d996d2f35a42211e7d45a2f3_356x325.jpg) 圖:`ListView` ## `TreeView` 在本章的最后一個示例中,我們使用`TreeView`小部件顯示分層的數據樹。 `tree.java` ```java package com.zetcode; import org.gnome.gdk.Event; import org.gnome.gtk.CellRendererText; import org.gnome.gtk.DataColumn; import org.gnome.gtk.DataColumnString; import org.gnome.gtk.Gtk; import org.gnome.gtk.Statusbar; import org.gnome.gtk.TreeIter; import org.gnome.gtk.TreePath; import org.gnome.gtk.TreeStore; import org.gnome.gtk.TreeView; import org.gnome.gtk.TreeViewColumn; import org.gnome.gtk.VBox; import org.gnome.gtk.Widget; import org.gnome.gtk.Window; import org.gnome.gtk.WindowPosition; /** * ZetCode Java Gnome tutorial * * This program demonstrates the * TreeView widget in tree view mode. * * @author jan bodnar * website zetcode.com * last modified March 2009 */ public class GTree extends Window { private DataColumnString dataCol; private TreeStore model; private TreeIter row; private TreeView view; private TreeIter rowChild; private TreeViewColumn column; private CellRendererText renderer; private Statusbar statusbar; public GTree() { setTitle("GTree"); initUI(); connect(new Window.DeleteEvent() { public boolean onDeleteEvent(Widget source, Event event) { Gtk.mainQuit(); return false; } }); setDefaultSize(350, 300); setPosition(WindowPosition.CENTER); showAll(); } public void initUI() { statusbar = new Statusbar(); model = new TreeStore(new DataColumn[] { dataCol = new DataColumnString(), }); row = model.appendRow(); model.setValue(row, dataCol, "Scripting languages"); rowChild = model.appendChild( row ); model.setValue(rowChild, dataCol, "PHP"); rowChild = model.appendChild( row ); model.setValue(rowChild, dataCol, "Python"); rowChild = model.appendChild( row ); model.setValue(rowChild, dataCol, "PERL"); rowChild = model.appendChild( row ); model.setValue(rowChild, dataCol, "Ruby"); row = model.appendRow(); model.setValue(row, dataCol, "Compiling languages"); rowChild = model.appendChild( row ); model.setValue( rowChild, dataCol, "Java"); rowChild = model.appendChild( row ); model.setValue( rowChild, dataCol, "C++"); rowChild = model.appendChild( row ); model.setValue( rowChild, dataCol, "C#"); rowChild = model.appendChild( row ); model.setValue( rowChild, dataCol, "C"); view = new TreeView(model); column = view.appendColumn(); column.setTitle("Programming Languages"); renderer = new CellRendererText(column); renderer.setText(dataCol); view.connect(new TreeView.RowActivated() { public void onRowActivated(TreeView treeView, TreePath treePath, TreeViewColumn treeViewColumn) { final TreeIter row; final String text; row = model.getIter(treePath); text = model.getValue(row, dataCol); statusbar.setMessage(text); } }); VBox vbox = new VBox(false, 0); vbox.packStart(view); vbox.packStart(statusbar, false, false, 0); add(vbox); } public static void main(String[] args) { Gtk.init(args); new GTree(); Gtk.main(); } } ``` 這次我們使用`TreeView`小部件顯示分層數據。 ```java model = new TreeStore(new DataColumn[] { dataCol = new DataColumnString(), }); ``` 在這里,我們聲明`TreeStore`具有一個字符串數據列。 ```java model.setValue(row, dataCol, "Scripting languages"); ``` 我們附加一個頂級節點。 ```java rowChild = model.appendChild( row ); model.setValue(rowChild, dataCol, "PHP"); ``` 我們為頂層節點附加一個子行。 ```java view = new TreeView(model); ``` 我們創建`TreeView`小部件的實例。 ```java column = view.appendColumn(); column.setTitle("Programming Languages"); renderer = new CellRendererText(column); renderer.setText(dataCol); ``` 我們創建列和單元格渲染器。 ```java row = model.getIter(treePath); text = model.getValue(row, dataCol); statusbar.setMessage(text); ``` 雙擊后,我們將在狀態欄中顯示選定的節點。 ![Tree](https://img.kancloud.cn/86/4b/864b9cfd0d289642db85f4a1872ff8fd_356x325.jpg) 圖:`Tree` 在本章中,我們討論的是高級 Java Gnome 小部件。
                  <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>

                              哎呀哎呀视频在线观看