余録:worldCup/jython/ex07/wcFrame.py

#! /usr/bin/env python
# coding: utf-8
## ----------------------------------------
##
## (C) Copyright 2000-2010, 小粒ちゃん《監修》小泉ひよ子とタマゴ倶楽部
##
## ----------------------------------------
## History: Swing Example "2010 FIFA World Cup South Africa™"
##      2003/07, Java/Jython
##      2006/07, Jython
##      2008/02, Jython 2.2.1
##      2010/06, Jython 2.5.0
#...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
"""
>>> tips()

>>> ## ----------------------------------------
>>> None
version: #1.0.12
"""
from __init__ import *

## ---------------------------------------- demo: jython
"""
$ cd /Users/sketch/home_sketch/worldCup/jython/
$ jython -i ex07/wcFrame.py

"""
## ----------------------------------------
from javax.swing import ImageIcon
from javax.swing import JFrame
from javax.swing import JLabel
from javax.swing import JList
from javax.swing import JPanel
from javax.swing import JScrollPane
from javax.swing import JSplitPane

class TopPanel(JPanel):
    def __init__(self, master, *args, **keys):
        master.contentPane = self

        def teams():
            return list("ABCDEFGH")

        def leftComponent():
            listData = teams()
            
            # class javax.swing.JList
            # public javax.swing.JList()
            view = JList(
                listData,   # java.util.Vector
                valueChanged = self,
                )
            comp = JScrollPane(
                viewportView = view,
                preferredSize = (120,150),
                )
            return comp

        def rightComponent():
            view = JLabel(
                icon = ImageIcon("matches/fifa.png"),
                )
            comp = JScrollPane(
                viewportView = view,
                preferredSize = (180,0),
                )
            return comp

        def splitPane():
            comp = JSplitPane(
                orientation = JSplitPane.HORIZONTAL_SPLIT,
                oneTouchExpandable = True,
                dividerLocation = 100,
                leftComponent  = leftComponent(),
                rightComponent = rightComponent(),
                )
            return comp

        comp = splitPane()
        self.add(comp)
        master.pack()

    # interface javax.swing.event.ListSelectionListener
    # public abstract void
    # javax.swing.event.ListSelectionListener.
    #   valueChanged()
    def __call__(self, e):  # javax.swing.event.ListSelectionEvent
        value = e.source.selectedValue
        print("::%s"%value)

## ----------------------------------------
def tips():
    global Qt; Qt = \
    frame = JFrame(
        title = "FIFA World Cup #07",
        size = (320,180),
        locationRelativeTo = None,
        defaultCloseOperation = JFrame.EXIT_ON_CLOSE,
        )
    TopPanel(frame)
    frame.visible = True

## ----------------------------------------
if __name__=='__main__':
    inform()
    testmod()

## ========================================

Java の素描 #007: リストを利用する

記事一覧 Java.use(better, Swing=Jython) #FIFA World Cup への道《Jython2.5》

Java の素描 Jython 弾丸ツアー:時短プログラミング生活のすすめ 〜

《著》森こねこ、伊藤うさぎ、小粒ちゃん@湘南組《監修》タマゴ倶楽部

第1版♪2003/05/23 ● 第2版♪2006/04/03 ● 第3版♪2010/06/11

step07: リストを利用する

リストの中に任意の項目を列挙します。

■ 要求仕様: 全チームの一覧表を作成する

全32チームの一覧表(リスト項目)を作成します。各項目を選択すると、チームの情報が得られます。ここでは、既存のコンポーネントの中から

  • javax.swing.JList

を利用します。

■ 動作を確認する

任意の項目を提示して、各項目を選択したときの動作を規定します。チームを提示する前の準備として、8つの項目(A から H までの文字)で、その動作を確認します。各項目を選択すると、選択した情報が得られます。

■ プログラムを変更する
## ---------------------------------------- wcFrame.py
from javax.swing import JList
...
class TopPanel(JPanel):
    def __init__(self, master, *args, **keys):
        ...
        def teams():
            return list("ABCDEFGH")

        def leftComponent():
            listData = teams()
            view = JList(
                listData,   # java.util.Vector
                valueChanged = self,
                )

    def __call__(self, e):  # javax.swing.event.ListSelectionEvent
        value = e.source.selectedValue
        print("::%s"%value)
■ プログラムを実行する
$ jython -i ex07/wcFrame.py
>>> ::A
A
B
B


分割した枠の左側にはリスト項目が表示されます。ここで、リスト項目から "A" を選択すると、選択した項目(文字列)が出力されます。

》作業中です《


関連記事

TOP

Last updated♪2010/07/22