<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 中的 Pango > 原文: [http://zetcode.com/gui/javagnome/pango/](http://zetcode.com/gui/javagnome/pango/) 在 Java Gnome 編程教程的這一部分中,我們將探索 Pango 庫。 Pango 是一個免費的開源計算庫,可高質量呈現國際化文本。 可以使用不同的字體后端,從而允許跨平臺支持。 (維基百科) Pango 提供了用于`Gdk`和`Gtk`的高級字體和文本處理。 ## 引用 在我們的第一個示例中,我們展示了如何更改`Label`小部件的字體。 `quotes.java` ```java package com.zetcode; import org.gnome.gdk.Event; import org.gnome.gtk.Fixed; import org.gnome.gtk.Gtk; import org.gnome.gtk.Label; import org.gnome.gtk.Widget; import org.gnome.gtk.Window; import org.gnome.gtk.WindowPosition; import org.gnome.pango.FontDescription; /** * ZetCode Java Gnome tutorial * * This program uses the pango library to * display text. * * @author jan bodnar * website zetcode.com * last modified March 2009 */ public class GQuotes extends Window { public GQuotes() { setTitle("Quotes"); initUI(); connect(new Window.DeleteEvent() { public boolean onDeleteEvent(Widget source, Event event) { Gtk.mainQuit(); return false; } }); setPosition(WindowPosition.CENTER); showAll(); } public void initUI() { String text = "Excess of joy is harder to bear than any amount\n" + "of sorrow. The more one judges, the less one loves.\n" + "There is no such thing as a great talent without great will power."; Label label = new Label(text); FontDescription fontdesc = new FontDescription("Purisa 9"); label.modifyFont(fontdesc); Fixed fix = new Fixed(); fix.put(label, 5, 5); add(fix); } public static void main(String[] args) { Gtk.init(args); new GQuotes(); Gtk.main(); } } ``` 在上面的代碼示例中,我們有一個帶有三個引號的標簽小部件。 我們將其字體更改為 Purisa 9。 ```java String text = "Excess of joy is harder to bear than any amount\n" + "of sorrow. The more one judges, the less one loves.\n" + "There is no such thing as a great talent without great will power."; ``` 這是要在標簽中顯示的文本。 ```java FontDescription fontdesc = new FontDescription("Purisa 9"); ``` `FontDescription`用于指定要加載的字體的特征。 ```java label.modifyFont(fontdesc); ``` 我們將標簽小部件的字體更改為 Purisa 9。 ![Quotations](https://img.kancloud.cn/80/71/80711df799056c022c6e97dba9713f5d_455x93.jpg) 圖:`Quotations` ## Pango 標記 在下面的示例中,我們將使用 Pango 標記語言來修改`ExposeEvent`事件中的字體。 `markup.java` ```java package com.zetcode; import org.freedesktop.cairo.Context; import org.gnome.gdk.Event; import org.gnome.gdk.EventExpose; import org.gnome.gtk.DrawingArea; import org.gnome.gtk.Gtk; import org.gnome.gtk.Widget; import org.gnome.gtk.Window; import org.gnome.pango.FontDescription; import org.gnome.pango.Layout; /** * ZetCode Java Gnome tutorial * * This program uses Pango markup language * to modify the text. * * @author jan bodnar * website zetcode.com * last modified March 2009 */ public class GPangoMarkup extends Window implements Widget.ExposeEvent { String quote = "<span foreground='blue' size='19000'>The only " + "victory over love is flight</span>"; public GPangoMarkup() { setTitle("Pango Markup"); initUI(); connect(new Window.DeleteEvent() { public boolean onDeleteEvent(Widget source, Event event) { Gtk.mainQuit(); return false; } }); move(150, 150); showAll(); } public void initUI() { DrawingArea darea = new DrawingArea(); darea.connect(this); darea.queueDraw(); add(darea); setBorderWidth(5); } public boolean onExposeEvent(Widget widget, EventExpose eventExpose) { final Context cr; final Layout layout; final FontDescription desc; cr = new Context(widget.getWindow()); layout = new Layout(cr); desc = new FontDescription("Sans 12"); layout.setFontDescription(desc); layout.setMarkup(quote); widget.setSizeRequest(layout.getPixelWidth(), layout.getPixelHeight()); cr.showLayout(layout); return false; } public static void main(String[] args) { Gtk.init(args); new GPangoMarkup(); Gtk.main(); } } ``` 使用 Cario 庫進行繪制。 我們通過傳遞 Cario 繪圖上下文來獲得布局。 ```java cr = new Context(widget.getWindow()); ``` 此代碼行創建一個`Context`對象。 ```java layout = new Layout(cr); ``` `Layout`代表文本的一段及其屬性。 ```java layout.setMarkup(quote); ``` 這行設置布局的標記。 ```java widget.setSizeRequest(layout.getPixelWidth(), layout.getPixelHeight()); ``` 這是為了顯示窗口中的所有文本。 ```java cr.showLayout(layout); ``` 最后,繪制文本。 ![Pango markup](https://img.kancloud.cn/22/cc/22cc6d7835dbf71644341010b3601c76_440x64.jpg) 圖:Pango 標記 ## Unicode Pango 用于處理國際化文本。 `unicode.java` ```java package com.zetcode; import org.gnome.gdk.Event; import org.gnome.gtk.Fixed; import org.gnome.gtk.Gtk; import org.gnome.gtk.Label; import org.gnome.gtk.Widget; import org.gnome.gtk.Window; import org.gnome.gtk.WindowPosition; import org.gnome.pango.FontDescription; /** * ZetCode Java Gnome tutorial * * This program shows text in * azbuka. * * @author jan bodnar * website zetcode.com * last modified March 2009 */ public class GUnicode extends Window { public GUnicode() { setTitle("Unicode"); initUI(); connect(new Window.DeleteEvent() { public boolean onDeleteEvent(Widget source, Event event) { Gtk.mainQuit(); return false; } }); setPosition(WindowPosition.CENTER); showAll(); } public void initUI() { String text = "Фёдор Михайлович Достоевский родился 30 октября (11 ноября)\n" + "1821 года в Москве.Был вторым из 7 детей. Отец, Михаил Андреевич,\n" + "работал в госпитале для бедных. Мать, Мария Фёдоровна\n" + "(в девичестве Нечаева), происходила из купеческого рода."; Label label = new Label(text); FontDescription fontdesc = new FontDescription("Purisa 9"); label.modifyFont(fontdesc); Fixed fix = new Fixed(); fix.put(label, 5, 5); add(fix); setBorderWidth(5); } public static void main(String[] args) { Gtk.init(args); new GUnicode(); Gtk.main(); } } ``` 我們在西里爾字母中顯示一些文本。 ```java String text = "Фёдор Михайлович Достоевский родился 30 октября (11 ноября)\n" ... ``` 我們可以直接使用 unicode 文本。 但是,文本永遠不會放在源代碼中。 在實際的文字應用中,我們將文本放在外部文件中。 在 Java 中,這些通常是屬性文件。 ```java Label label = new Label(text); ``` 我們通常在標簽小部件中使用它。 ![Unicode](https://img.kancloud.cn/50/c9/50c94f2c51cad7cb84bbce6921f3d0f8_501x124.jpg) 圖:Unicode 在 Java Gnome 編程教程的這一章中,我們使用了 Pango 庫。
                  <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>

                              哎呀哎呀视频在线观看