- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!!!Jython JFileChooser 1
[JFrame][Jython Swing][Swing][Jython][Python]
[Jython Swing][Swing][Jython][Python]
!!方針
以下を参考に、Jythonでファイル選択を実装してみる
*http://java.sun.com/docs/books/tutorial/uiswing/components/filechooser.html
!!ソースコード
::実行例
{{ref_image js_jfilechooser01.jpg}}
.
{{ref_image js_jfilechooser02.jpg}}
::ソースコード
# -*- coding: utf-8 -*-
from java.lang import *
from java.io import *
from java.awt import *
from java.awt.event import *
from javax.swing import *
from javax.swing.filechooser import *
class JFileChooserTest(JPanel):
def __init__(self):
super(JFileChooserTest, self).__init__(BorderLayout())
self.log = JTextArea(5, 20)
self.log.margin = Insets(5,5,5,5)
self.log.editable = False
logScrollPane = JScrollPane(self.log)
self.fc = JFileChooser()
self.openButton = JButton("Open a File...")
self.saveButton = JButton("Save a File...")
lsnr = ButtonListener(self)
self.openButton.addActionListener(lsnr)
self.saveButton.addActionListener(lsnr)
buttonPanel = JPanel()
buttonPanel.add(self.openButton)
buttonPanel.add(self.saveButton)
self.add(buttonPanel, BorderLayout.PAGE_START)
self.add(logScrollPane, BorderLayout.CENTER)
def createUI(self):
frame = JFrame("FileChooserDemo")
frame.defaultCloseOperation = JFrame.EXIT_ON_CLOSE
frame.add(self)
frame.pack()
frame.visible = True
class ButtonListener(ActionListener):
def __init__(self, target):
self.target = target
def actionPerformed(self, e):
if e.source is self.target.openButton:
returnVal = self.target.fc.showOpenDialog(self.target)
if returnVal == JFileChooser.APPROVE_OPTION:
file = self.target.fc.selectedFile
self.target.log.append("Opening: %s.\n" % file.name)
else:
self.target.log.append("Open command cancelled by user.\n")
self.target.log.caretPosition = self.target.log.document.length
elif e.source is self.target.saveButton:
returnVal = self.target.fc.showSaveDialog(self.target);
if returnVal == JFileChooser.APPROVE_OPTION:
file = self.target.fc.selectedFile
self.target.log.append("Saving: %s.\n" % file.getName())
else:
self.target.log.append("Save command cancelled by user.\n")
self.target.log.caretPosition = self.target.log.document.length
class Invoker(Runnable):
def run(self):
# Java Look & Feel(Metal)のデフォルトでボールドフォントを使用しない
UIManager.put("swing.boldMetal", Boolean.FALSE)
sample = JFileChooserTest()
sample.createUI()
SwingUtilities.invokeLater(Invoker())