| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

Jython JFileChooser 1

提供: MyMemoWiki
2020年2月15日 (土) 08:04時点におけるPiroto (トーク | 投稿記録)による版
ナビゲーションに移動 検索に移動

Jython JFileChooser 1

[[Jython Swing][Swing][Jython][Python]]

方針

以下を参考に、Jythonでファイル選択を実装してみる

ソースコード

実行例

0745 js jfilechooser01.jpg . 0746 js jfilechooser02.jpg

ソースコード
  1. # -*- coding: utf-8 -*-
  2.  
  3. from java.lang import *
  4. from java.io import *
  5. from java.awt import *
  6. from java.awt.event import *
  7. from javax.swing import *
  8. from javax.swing.filechooser import *
  9.  
  10. class JFileChooserTest(JPanel):
  11. def __init__(self):
  12. super(JFileChooserTest, self).__init__(BorderLayout())
  13. self.log = JTextArea(5, 20)
  14. self.log.margin = Insets(5,5,5,5)
  15. self.log.editable = False
  16. logScrollPane = JScrollPane(self.log)
  17. self.fc = JFileChooser()
  18. self.openButton = JButton("Open a File...")
  19. self.saveButton = JButton("Save a File...")
  20. lsnr = ButtonListener(self)
  21. self.openButton.addActionListener(lsnr)
  22. self.saveButton.addActionListener(lsnr)
  23. buttonPanel = JPanel()
  24. buttonPanel.add(self.openButton)
  25. buttonPanel.add(self.saveButton)
  26. self.add(buttonPanel, BorderLayout.PAGE_START)
  27. self.add(logScrollPane, BorderLayout.CENTER)
  28. def createUI(self):
  29. frame = JFrame("FileChooserDemo")
  30. frame.defaultCloseOperation = JFrame.EXIT_ON_CLOSE
  31. frame.add(self)
  32. frame.pack()
  33. frame.visible = True
  34. class ButtonListener(ActionListener):
  35. def __init__(self, target):
  36. self.target = target
  37. def actionPerformed(self, e):
  38. if e.source is self.target.openButton:
  39. returnVal = self.target.fc.showOpenDialog(self.target)
  40. if returnVal == JFileChooser.APPROVE_OPTION:
  41. file = self.target.fc.selectedFile
  42. self.target.log.append("Opening: %s.\n" % file.name)
  43. else:
  44. self.target.log.append("Open command cancelled by user.\n")
  45. self.target.log.caretPosition = self.target.log.document.length
  46. elif e.source is self.target.saveButton:
  47. returnVal = self.target.fc.showSaveDialog(self.target);
  48. if returnVal == JFileChooser.APPROVE_OPTION:
  49. file = self.target.fc.selectedFile
  50. self.target.log.append("Saving: %s.\n" % file.getName())
  51. else:
  52. self.target.log.append("Save command cancelled by user.\n")
  53. self.target.log.caretPosition = self.target.log.document.length
  54. class Invoker(Runnable):
  55. def run(self):
  56. # Java Look & Feel(Metal)のデフォルトでボールドフォントを使用しない
  57. UIManager.put("swing.boldMetal", Boolean.FALSE)
  58. sample = JFileChooserTest()
  59. sample.createUI()
  60. SwingUtilities.invokeLater(Invoker())