【问题标题】:Trouble with Jython GUIJython GUI 的问题
【发布时间】:2013-06-06 02:28:18
【问题描述】:

我的 Jython GUI 出现问题。我需要使文本字段出现。我相信我遇到了布局问题,但我不确定如何在 Jython 中创建新的 FlowLayout。

#!/usr/bin/env jython

# Created by Joe Castleberry
# 2013 

# Imports
from javax.swing import * 
from java.awt import *

class Window: 
    def __init__(self): 
        # Global variables
        global frame
        global label
        global container
        global text

        # Definition of global variables
        frame = JFrame("Joe's first Java program")
        label = JLabel("Hello World!", JLabel.CENTER)
        container = JPanel()
        text = JTextField(10)

    def builder(self):  
        # Building container
        container.setLayout(None)
        container.setBackground(Color.BLACK)

        # Building frame
        frame.getContentPane().add(container)       # Adding Container to JFrame
        frame.setSize(300,300)
        frame.setVisible(True)
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

        # Adding components to container
         container.add(text)



a = Window()
a.builder()

【问题讨论】:

    标签: java python swing user-interface jython


    【解决方案1】:

    我添加了上面以 CHANGED 开头的评论的更改。您的代码只需稍作修改即可工作。

    1) 一定要使用布局,不要将布局设置为None,没有绝对布局管理器等。

    2) 在打包框架之前将组件添加到主内容窗格容器。 如果没有,您需要重新验证容器等(在框架可见后可能重新绘制)。

    #!/usr/bin/env jython
    
    # Created by Joe Castleberry
    # 2013 
    
    # Imports
    from javax.swing import * 
    from java.awt import *
    
    class Window: 
        def __init__(self): 
            # Global variables
            global frame
            global label
            global container
            global text
    
            # Definition of global variables
            frame = JFrame("Joe's first Java program")
            label = JLabel("Hello World!", JLabel.CENTER)
            container = JPanel()
            text = JTextField(10)
    
        def builder(self):  
            # Building container
            # CHANGED Removed container.setLayout(None)
            container.setBackground(Color.BLACK)
            # CHANGED Move the add text call here
            container.add(text)
    
            # Building frame
            frame.getContentPane().add(container)
            frame.setSize(300,300)
            frame.setVisible(True)
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
    
    
    
    a = Window()
    a.builder()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-19
      相关资源
      最近更新 更多