1

我的 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()
4

1 回答 1

3

我用上面的评论添加了更改,并以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()
于 2013-06-06T03:20:37.273 回答