今回の課題:各チームをグループ別に表示しよう
【要求仕様】各チームをグループ別に表示したい。
リスト項目を表示するときに、各チームをグループ別(同じ行)に分類します。
例題を起動すると、各チームの情報が表示されます。リスト項目には、同じグループのチームが「横1行に並ぶ」ようにして表示されます。ここでは、日本(JPN)が、ブラジル(BRA)オーストラリア(AUS)クロアチア(CRO)とともに、同じグループFに属するのが分かります。1)リスト項目からチームを選択すると、2)ボタンに旗が表示されます。このボタンを選択すると、3)新たなウィンドウにユニフォームが表示されます。これを実現したのが、次のコードです。
class TeamPanel(JPanel):
... No change ...
def __init__(self, listData):
self.layout = BorderLayout()
e = self._selectPanel(listData)
self.add(e, BorderLayout.CENTER)
e = self.textView = JTextArea(
rows=5,
lineWrap=True,
wrapStyleWord=True,
)
self.add(JScrollPane(e), BorderLayout.SOUTH)
self._resetImage(self.team)
self._resetText(self.team)
def _selectPanel(self, listData):
panel = JPanel(
layout=BorderLayout(),
)
e = self.imageView = JButton(
actionPerformed=self.actionPerformed,
)
panel.add(e, BorderLayout.WEST)
e = self.listView = JList(
listData=listData,
layoutOrientation=JList.HORIZONTAL_WRAP,
valueChanged=self.valueChanged,
)
panel.add(JScrollPane(e), BorderLayout.CENTER)
return panelclass KitPanel(JPanel):
... No change ...
def __init__(self, team):
self.layout = BoxLayout(self, BoxLayout.Y_AXIS)
e = self.team = team
... No change ...
def ex_TeamPanel():
listData = [
"GER", "ECU", "POL", "CRC", # Group A
"ENG", "SWE", "PAR", "TRI", # Group B
"ARG", "NED", "CIV", "SCG", # Group C
"POR", "MEX", "ANG", "IRN", # Group D
"ITA", "GHA", "CZE", "USA", # Group E
"BRA", "AUS", "CRO", "JPN", # Group F
"SUI", "FRA", "KOR", "TOG", # Group G
"ESP", "UKR", "TUN", "KSA", # Group H
]
... No change ...
ではこれから、このコードに至るまでの物語を始めます。今回の要求仕様では、各チームをグループ別に表示するために、既存のリソースを変更する必要があります。