Python 弾丸ツアー/Java: JavaBeans 準拠 ... step 3: 可変長の引数
Python.use(better); Python 弾丸ツアー /Java: JFC/Swing 編
>>> JavaBeans 準拠
step 3: 可変長の引数
《Python3.1|Jython2.5|IronPython2.6》
step 3: ラベルを利用する
■ 可変長の引数
 ̄任意の個数の引数(位置引数、キーワード引数)の取扱いには注意が必要です。
def __init__(self, master, *args, **keys): textPane = self._textPane( minimumSize = (150,100), ) def _textPane(self, **keys): comp = JLabel(**keys) self.label = comp return comp
 ̄メソッド _textPane の仮引数 **keys が、キーワード引数 minimumSize= に呼応して、クラス呼び出し JLabel() にそのまま渡されます。ここで注目して欲しいのは、具体的なキーワード引数には依存しないことです。そのため、後の仕様変更にも柔軟に対処できます。
def __init__(self, master, *args, **keys): controlPane = self._controlPane( minimumSize = (70,100), actionPerformed = self.actionPerformed, ) def _controlPane(self, **keys): comp = JButton( text = "Now", **keys ) return comp
 ̄メソッド _controlPane の仮引数 **keys が、2つのキーワード引数 minimumSize= および actionPerformed= に呼応して、クラス呼び出し JButton() にそのまま渡されます。
def __init__(self, master, *args, **keys): self.splitPane = self._splitPane( leftComponent = textPane, rightComponent = controlPane, ) master.contentPane = self.splitPane def _splitPane(self, **keys): pane = JSplitPane( orientation = JSplitPane.HORIZONTAL_SPLIT, dividerLocation = 180, **keys ) return pane
 ̄メソッド _splitPane の仮引数 **keys が、2つのキーワード引数 leftComponent= および rightComponent= に呼応して、クラス呼び出し JSplitPane() にそのまま渡されます。
■ インスタンス属性
 ̄インスタンス属性は、異なるメソッド間で情報を共有したいときに便利です。
def _textPane(self, **keys): comp = JLabel(**keys) self.label = comp return comp def actionPerformed(self, e): # ActionListener self.label.text = "%s"%ctime()
 ̄インスタンス属性 self.label は、2つのメソッド _textPane および actionPerformed で情報を共有するために必要です。□
《TIPS》ラベル:JLabel
 ̄ラベルに表示するテキスト(文字列)とともに、画像を指定したいときには、次のようにします。
>>> keys = dict(title="^_^", visible=True) >>> c = JLabel(text="Canada", icon=ImageIcon("_images/CAN.gif")) >>> JFrame(contentPane=c, **keys).size = 100,80
また、テキストの色を指定したいときには、
>>> c.foreground = Color.red
とすると、テキストの色が赤に変わります。□
↑TOP
》作業中です《