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 に答える