<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: gui code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Fri, 25 Jul 2008 04:29:28 GMT</pubDate>
    <description>DZone Snippets: gui code</description>
    <item>
      <title>Basic wxRuby Form Example</title>
      <link>http://snippets.dzone.com/posts/show/4752</link>
      <description>From the &lt;a href="http://rubyonwindows.blogspot.com"&gt;Ruby on Windows&lt;/a&gt; blog...&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;require 'wx'&lt;br /&gt;include Wx&lt;br /&gt;&lt;br /&gt;class MyFrame &lt; Frame&lt;br /&gt;    def initialize()&lt;br /&gt;        super(nil, -1, 'My Frame Title')&lt;br /&gt;        # First create the controls&lt;br /&gt;        @my_panel = Panel.new(self)&lt;br /&gt;        @my_label = StaticText.new(@my_panel, -1, 'My Label Text', &lt;br /&gt;            DEFAULT_POSITION, DEFAULT_SIZE, ALIGN_CENTER)&lt;br /&gt;        @my_textbox = TextCtrl.new(@my_panel, -1, 'Default Textbox Value')&lt;br /&gt;        @my_combo = ComboBox.new(@my_panel, -1, 'Default Combo Text', &lt;br /&gt;            DEFAULT_POSITION, DEFAULT_SIZE, ['Item 1', 'Item 2', 'Item 3'])&lt;br /&gt;        @my_button = Button.new(@my_panel, -1, 'My Button Text')&lt;br /&gt;        # Bind controls to functions&lt;br /&gt;        evt_button(@my_button.get_id()) { |event| my_button_click(event)}&lt;br /&gt;        # Now do the layout&lt;br /&gt;        @my_panel_sizer = BoxSizer.new(VERTICAL)&lt;br /&gt;        @my_panel.set_sizer(@my_panel_sizer)&lt;br /&gt;        @my_panel_sizer.add(@my_label, 0, GROW|ALL, 2)&lt;br /&gt;        @my_panel_sizer.add(@my_textbox, 0, GROW|ALL, 2)&lt;br /&gt;        @my_panel_sizer.add(@my_combo, 0, GROW|ALL, 2)&lt;br /&gt;        @my_panel_sizer.add(@my_button, 0, GROW|ALL, 2)        &lt;br /&gt;        show()&lt;br /&gt;    end&lt;br /&gt;    &lt;br /&gt;    def my_button_click(event)&lt;br /&gt;        # Your code here&lt;br /&gt;    end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;class MyApp &lt; App&lt;br /&gt;    def on_init&lt;br /&gt;        MyFrame.new&lt;br /&gt;    end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;MyApp.new.main_loop()&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Further details and discussion &lt;a href="http://rubyonwindows.blogspot.com/2007/11/getting-started-with-wxruby-gui-toolkit.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;</description>
      <pubDate>Wed, 14 Nov 2007 03:13:58 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4752</guid>
      <author>dmullet (David Mullet)</author>
    </item>
    <item>
      <title>Java - Mini Lettore Wav</title>
      <link>http://snippets.dzone.com/posts/show/2018</link>
      <description>// Piccolissimo Lettore Audio per Java&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;package Multimedia;&lt;br /&gt;&lt;br /&gt;import javax.swing.JDialog;&lt;br /&gt;import javax.swing.JFrame;&lt;br /&gt;import javax.swing.UIManager;&lt;br /&gt;import javax.swing.UnsupportedLookAndFeelException;&lt;br /&gt;import javax.swing.plaf.metal.MetalLookAndFeel;&lt;br /&gt;&lt;br /&gt;public class AudioSystem&lt;br /&gt;{&lt;br /&gt;	public static void main(String[] args)&lt;br /&gt;	{&lt;br /&gt;		JFrame.setDefaultLookAndFeelDecorated(true);&lt;br /&gt;		JDialog.setDefaultLookAndFeelDecorated(true);&lt;br /&gt;		&lt;br /&gt;		try&lt;br /&gt;		{&lt;br /&gt;			UIManager.setLookAndFeel(new MetalLookAndFeel());&lt;br /&gt;		}&lt;br /&gt;		catch(UnsupportedLookAndFeelException e)&lt;br /&gt;		{&lt;br /&gt;			e.printStackTrace();&lt;br /&gt;		}&lt;br /&gt;		&lt;br /&gt;		new AudioGUI();&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;package Multimedia;&lt;br /&gt;&lt;br /&gt;import java.awt.Container;&lt;br /&gt;import java.awt.event.ActionEvent;&lt;br /&gt;import java.awt.event.ActionListener;&lt;br /&gt;import java.awt.event.WindowEvent;&lt;br /&gt;import java.awt.event.WindowListener;&lt;br /&gt;import java.io.File;&lt;br /&gt;&lt;br /&gt;import javax.swing.JButton;&lt;br /&gt;import javax.swing.JFileChooser;&lt;br /&gt;import javax.swing.JFrame;&lt;br /&gt;import javax.swing.JPanel;&lt;br /&gt;&lt;br /&gt;public class AudioGUI extends JFrame implements WindowListener&lt;br /&gt;{&lt;br /&gt;	public AudioGUI()&lt;br /&gt;	{&lt;br /&gt;		this.setTitle("AudioSystem");&lt;br /&gt;		this.setSize(240, 100);&lt;br /&gt;		this.setResizable(false);&lt;br /&gt;		&lt;br /&gt;		this.addWindowListener(this);&lt;br /&gt;		&lt;br /&gt;		Container gc = this.getContentPane();&lt;br /&gt;		gc.add(new AudioGUIPan());&lt;br /&gt;		&lt;br /&gt;		this.setVisible(true);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public void windowOpened(WindowEvent e)&lt;br /&gt;	{&lt;br /&gt;		&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public void windowClosing(WindowEvent e)&lt;br /&gt;	{&lt;br /&gt;		System.exit(0);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public void windowClosed(WindowEvent e)&lt;br /&gt;	{&lt;br /&gt;		&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public void windowIconified(WindowEvent e)&lt;br /&gt;	{&lt;br /&gt;		&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public void windowDeiconified(WindowEvent e)&lt;br /&gt;	{&lt;br /&gt;		&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public void windowActivated(WindowEvent e)&lt;br /&gt;	{&lt;br /&gt;		&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public void windowDeactivated(WindowEvent e)&lt;br /&gt;	{&lt;br /&gt;		&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class AudioGUIPan extends JPanel implements ActionListener&lt;br /&gt;{&lt;br /&gt;	private JButton play;&lt;br /&gt;	private JButton stop;&lt;br /&gt;	private JButton loop;&lt;br /&gt;	private JButton open;&lt;br /&gt;	private JButton close;&lt;br /&gt;	&lt;br /&gt;	private JFileChooser jfc;&lt;br /&gt;	&lt;br /&gt;	private String file;&lt;br /&gt;	&lt;br /&gt;	private AudioDevice ad;&lt;br /&gt;	&lt;br /&gt;	public AudioGUIPan()&lt;br /&gt;	{&lt;br /&gt;		play = new JButton("Play");&lt;br /&gt;		play.addActionListener(this);&lt;br /&gt;		stop = new JButton("Stop");&lt;br /&gt;		stop.addActionListener(this);&lt;br /&gt;		open = new JButton("Open");&lt;br /&gt;		open.addActionListener(this);&lt;br /&gt;		close = new JButton("Close");&lt;br /&gt;		close.addActionListener(this);&lt;br /&gt;		&lt;br /&gt;		this.add(stop);&lt;br /&gt;		this.add(play);&lt;br /&gt;		this.add(open);&lt;br /&gt;		this.add(close);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public void actionPerformed(ActionEvent e)&lt;br /&gt;	{&lt;br /&gt;		if(e.getSource() == close)&lt;br /&gt;		{&lt;br /&gt;			System.exit(0);&lt;br /&gt;		}&lt;br /&gt;		else if(e.getSource() == open)&lt;br /&gt;		{&lt;br /&gt;			jfc = new JFileChooser();&lt;br /&gt;			jfc.setFileFilter(new AudioFilter());&lt;br /&gt;			&lt;br /&gt;			if(jfc.showOpenDialog(this) != JFileChooser.CANCEL_OPTION)&lt;br /&gt;			{&lt;br /&gt;				file = jfc.getSelectedFile().getAbsolutePath();&lt;br /&gt;				ad = new AudioDevice(new File(file));&lt;br /&gt;			}&lt;br /&gt;		}&lt;br /&gt;		else if(e.getSource() == play)&lt;br /&gt;		{&lt;br /&gt;			if(ad != null)&lt;br /&gt;				ad.play();&lt;br /&gt;		}&lt;br /&gt;		else if(e.getSource() == stop)&lt;br /&gt;		{&lt;br /&gt;			if(ad != null)&lt;br /&gt;				ad.stop();&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;package Multimedia;&lt;br /&gt;import java.io.File;&lt;br /&gt;&lt;br /&gt;import javax.swing.filechooser.FileFilter;&lt;br /&gt;&lt;br /&gt;public class AudioFilter extends FileFilter&lt;br /&gt;{&lt;br /&gt;	public boolean accept(File f)&lt;br /&gt;	{&lt;br /&gt;		return f.getName().toLowerCase().endsWith(".wav") || f.isDirectory();&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public String getDescription()&lt;br /&gt;	{&lt;br /&gt;		return "Audio File *.wav";&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;package Multimedia;&lt;br /&gt;&lt;br /&gt;import java.applet.Applet;&lt;br /&gt;import java.applet.AudioClip;&lt;br /&gt;import java.io.File;&lt;br /&gt;import java.net.MalformedURLException;&lt;br /&gt;&lt;br /&gt;public class AudioDevice implements AudioClip&lt;br /&gt;{&lt;br /&gt;	private AudioClip ac;&lt;br /&gt;	public AudioDevice(File f)&lt;br /&gt;	{		&lt;br /&gt;		try&lt;br /&gt;		{&lt;br /&gt;			ac = Applet.newAudioClip(f.toURL());&lt;br /&gt;		}&lt;br /&gt;		catch(MalformedURLException e)&lt;br /&gt;		{&lt;br /&gt;			e.printStackTrace();&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	public void play()&lt;br /&gt;	{&lt;br /&gt;		ac.play();&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public void stop()&lt;br /&gt;	{&lt;br /&gt;		ac.stop();&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public void loop()&lt;br /&gt;	{&lt;br /&gt;		&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Mon, 15 May 2006 01:50:06 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2018</guid>
      <author>whitetiger ()</author>
    </item>
    <item>
      <title>Java - UIManager all-windows</title>
      <link>http://snippets.dzone.com/posts/show/2017</link>
      <description>// Imposto il tema Metal non solo all'interno delle finestre di Java, ma anche al suo esterno...&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;    // Con queste definizioni dico che tutti i frame e i dialog prendono il tema Metal&lt;br /&gt;    JFrame.setDefaultLookAndFeelDecorated(true);&lt;br /&gt;    JDialog.setDefaultLookAndFeelDecorated(true);&lt;br /&gt;    //&lt;br /&gt;&lt;br /&gt;    try&lt;br /&gt;    {&lt;br /&gt;        // Con questa imposto il tema&lt;br /&gt;	UIManager.setLookAndFeel(new MetalLookAndFeel());&lt;br /&gt;    }&lt;br /&gt;    catch(UnsupportedLookAndFeelException e)&lt;br /&gt;    {&lt;br /&gt;	e.printStackTrace();&lt;br /&gt;    }&lt;br /&gt;    // In questo modo tutte le finestre avranno il tema Metal&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Mon, 15 May 2006 01:41:13 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2017</guid>
      <author>whitetiger ()</author>
    </item>
    <item>
      <title>Drawing an arrow cursor</title>
      <link>http://snippets.dzone.com/posts/show/1452</link>
      <description>Calling polygon may be faster than a blit.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;x,y = 20,20&lt;br /&gt;arrow = [(0,0), (0,10), (2,8), (4,12), (6,11), (4,7), (7,7)]&lt;br /&gt;canvas.polygon([(x+dx,y+dy) for dx,dy in arrow], 0, 0xffffff)&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Here's an example app. It let you move cursor around.&lt;br /&gt;When you press the select key, a red circle is drawn.&lt;br /&gt;The longer you press, the bigger the circle.&lt;br /&gt;&lt;br /&gt;Start with the usual stuff&lt;br /&gt;&lt;code&gt;&lt;br /&gt;import e32&lt;br /&gt;from appuifw import *&lt;br /&gt;from key_codes import *&lt;br /&gt;&lt;br /&gt;class Keyboard(object):&lt;br /&gt;    def __init__(self):&lt;br /&gt;        self.state = {}  # is this key pressing ?&lt;br /&gt;        self.buffer= {}  # is it waiting to be processed ?&lt;br /&gt;    def handle_event(self, event): # for event_callback&lt;br /&gt;        code = event['scancode']&lt;br /&gt;        if event['type'] == EEventKeyDown:&lt;br /&gt;            self.buffer[code]= 1   # put into queue&lt;br /&gt;            self.state[code] = 1&lt;br /&gt;        elif event['type'] == EEventKeyUp:&lt;br /&gt;            self.state[code] = 0&lt;br /&gt;    def pressing(self, code):      # just check&lt;br /&gt;        return self.state.get(code,0)&lt;br /&gt;    def pressed(self, code):       # check and process the event&lt;br /&gt;        if self.buffer.get(code,0):&lt;br /&gt;            self.buffer[code] = 0  # take out of queue&lt;br /&gt;            return 1&lt;br /&gt;        return 0&lt;br /&gt;&lt;br /&gt;key = Keyboard()&lt;br /&gt;app.body = canvas = Canvas(event_callback=key.handle_event)&lt;br /&gt;&lt;br /&gt;def quit():&lt;br /&gt;    global running&lt;br /&gt;    running = 0&lt;br /&gt;&lt;br /&gt;app.exit_key_handler = quit&lt;br /&gt;running = 1&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Then the main part of this specific app.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;x,y = 20,20&lt;br /&gt;arrow = [(0,0), (0,10), (2,8), (4,12), (6,11), (4,7), (7,7)]&lt;br /&gt;&lt;br /&gt;while running:&lt;br /&gt;    if key.pressing(EScancodeUpArrow):&lt;br /&gt;        y -= 1&lt;br /&gt;    if key.pressing(EScancodeDownArrow):&lt;br /&gt;        y += 1&lt;br /&gt;    if key.pressing(EScancodeLeftArrow):&lt;br /&gt;        x -= 1&lt;br /&gt;    if key.pressing(EScancodeRightArrow):&lt;br /&gt;        x += 1&lt;br /&gt;    if key.pressed(EScancodeSelect):&lt;br /&gt;        r = 1&lt;br /&gt;        while key.pressing(EScancodeSelect):&lt;br /&gt;            r += 1       # bigger red circle&lt;br /&gt;            canvas.ellipse([(x-r,y-r),(x+r,y+r)], fill=0xff0000)&lt;br /&gt;            canvas.polygon([(x+dx,y+dy) for dx,dy in arrow], 0, 0xffffff)&lt;br /&gt;            e32.ao_sleep(0.03)&lt;br /&gt;&lt;br /&gt;    canvas.clear()&lt;br /&gt;    canvas.polygon([(x+dx,y+dy) for dx,dy in arrow], 0, 0xffffff)&lt;br /&gt;    e32.ao_sleep(0.01)&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;</description>
      <pubDate>Fri, 10 Feb 2006 09:06:11 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/1452</guid>
      <author>korakot (Korakot Chaovavanich)</author>
    </item>
    <item>
      <title>Using icons in Listbox</title>
      <link>http://snippets.dzone.com/posts/show/422</link>
      <description>pys60 1.1.3 provide some graphics capabilitis.&lt;br /&gt;One of them is using icons in Listbox&lt;br /&gt;(code taken from pys60 API reference)&lt;br /&gt;&lt;code&gt;&lt;br /&gt;icon1 = appuifw.Icon(u"z:\\system\\data\\avkon.mbm", 28, 29)&lt;br /&gt;icon2 = appuifw.Icon(u"z:\\system\\data\\avkon.mbm ", 40, 41)&lt;br /&gt;entries = [(u"Signal", icon1),&lt;br /&gt;           (u"Battery", icon2)]&lt;br /&gt;lb = appuifw.Listbox(entries, lbox_observe)&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Listbox is one of the 3 types that can be assigned to app.body&lt;br /&gt;(i.e. Text, Listbox, Canvas)&lt;br /&gt;So, to make code above able to run, you must add&lt;br /&gt;&lt;code&gt;appuifw.app.body = lb&lt;/code&gt;&lt;br /&gt;and the function lbox_observe that will handle the selection&lt;br /&gt;need to be defined.</description>
      <pubDate>Fri, 01 Jul 2005 15:24:44 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/422</guid>
      <author>korakot (Korakot Chaovavanich)</author>
    </item>
    <item>
      <title>Borderless JButton</title>
      <link>http://snippets.dzone.com/posts/show/245</link>
      <description>To create a borderless JButton in swing use the following:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;JButton taskButton = new JButton(action);&lt;br /&gt;taskButton.setBorder(BorderFactory.createEmptyBorder(2,2,2,2));&lt;br /&gt;taskButton.setHorizontalAlignment(JButton.LEADING); // optional&lt;br /&gt;taskButton.setBorderPainted(false);&lt;br /&gt;taskButton.setContentAreaFilled(false);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This is useful for "hyperlink" style buttons or "task buttons".&lt;br /&gt;</description>
      <pubDate>Tue, 03 May 2005 18:25:44 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/245</guid>
      <author>llucifer (Philipp Meier)</author>
    </item>
  </channel>
</rss>
