1: #! /usr/bin/env python
2: # coding: utf-8
3: ## ----------------------------------------
4: ##
5: ## (C) Copyright 2000-2010, 小粒ちゃん《監修》小泉ひよ子とタマゴ倶楽部
6: ##
7: ## ----------------------------------------
8: #...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
9: """
10: >>> tips()
11:
12: >>> ## ----------------------------------------
13: >>> None
14: version: #1.0.22
15: """
16: ## ---------------------------------------- demo: jython
17: """
18: _jython=/Users/sketch/book/java_useBetter_1/_jython
19:
20: cd /Users/sketch/book/java_useBetter_1/berry/colorChart/jython/
21: JYTHONPATH=$_jython jython -i colorSlider.py
22: ============================================================
23: Version: 2.5.0 (Release_2_5_0:6476, Jun 16 2009, 13:33:26)
24: Module : colorSlider.py
25: Date : Sun Sep 19 14:16:21 2010
26: ============================================================
27: """
28: ## ----------------------------------------
29: from java.awt import Color
30: from java.awt import GridLayout
31: from javax.swing import JPanel
32: from javax.swing import JSlider
33: from javax.swing import JSplitPane
34: from pawt import colors
35:
36: class TIPS():
37: colorNames = "red","green","blue",
38:
39: def __init__(self, master):
40: def canvasPane():
41: self.canvas = \
42: comp = JPanel(
43: preferredSize = (100,100),
44: )
45: return comp
46:
47: def controlPane():
48: def comp_():
49: comp = JSlider(
50: maximum = 255,
51: minimum = 0,
52: paintTicks = True,
53: majorTickSpacing = 32,
54: minorTickSpacing = 8,
55: minimumSize = (200,100),
56: stateChanged = Command(self),
57: )
58: return comp
59: def pane_():
60: self.control = \
61: pane = JPanel(
62: layout = GridLayout(0,1),
63: )
64: for e in self.colorNames:
65: pane.add(comp_())
66: return pane
67: pane = pane_()
68: return pane
69:
70: def splitPane():
71: pane = JSplitPane(
72: orientation = JSplitPane.HORIZONTAL_SPLIT,
73: leftComponent = controlPane(),
74: rightComponent = canvasPane(),
75: dividerLocation = 200,
76: )
77: return pane
78:
79: master.contentPane = splitPane()
80: master.pack()
81:
82: ## ----------------------------------------
83: def _update(self, value):
84: self.canvas.background = Color(*value)
85:
86: ## ----------------------------------------
87: class Command:
88: def __init__(self, client):
89: self.client = client
90:
91: def __call__(self, e): # ChangeListener
92: value = [e.value for e in self.client.control.components]
93: self.client._update(value)
94:
95: ## ----------------------------------------
96: from javax.swing import JFrame
97:
98: def tips():
99: frame = JFrame(
100: title = "color: JSlider",
101: locationRelativeTo = None,
102: defaultCloseOperation = JFrame.EXIT_ON_CLOSE,
103: )
104: TIPS(master = frame)
105: frame.visible = True
106:
107: ## ----------------------------------------
108: from __init__ import *
109: ##tips = TIPS.tips
110:
111: if __name__=='__main__':
112: inform()
113: testmod()
114:
115: ## ========================================