0

以前に Swing を使用したことがないので、http:
//www.zetcode.com/gui/jythonswing/layout/のチュートリアルを見ていました。

下部には、GroupLayout を使用して、ウィンドウのサイズに合わせてサイズが変更される単純なレイアウトを作成する例があります。基本的にこの例をコピーし、独自のコントロールとレイアウトを配置しました。ただし、コードを実行すると、すべてのコントロールがウィンドウの左上にまとめられ、移動もサイズ変更もまったく行われません。

私は何が欠けていますか?

コード:

#!/usr/local/bin/jython
# -*- coding: utf-8 -*-

from java.awt import Dimension
from java.awt import Color

from javax.swing import JButton,JList
from javax.swing import SwingConstants
from javax.swing import JFrame
from javax.swing import JLabel
from javax.swing import JTextArea
from javax.swing import BorderFactory
from javax.swing import GroupLayout


class Example(JFrame):

    def __init__(self):
        super(Example, self).__init__()

        self.initUI()

    def initUI(self):

        layout = GroupLayout(self.getContentPane())
        self.getContentPane().setLayout(layout)
        layout.setAutoCreateGaps(True)
        layout.setAutoCreateContainerGaps(True)

        self.setPreferredSize(Dimension(350, 300))

        self.data = ("one","two","three","four")
        flist = JList(self.data)

        edit = JButton("Edit")
        grab = JButton("Grab")
        status = JLabel("status")

        layout.setHorizontalGroup(layout.createParallelGroup()
                .addGroup(layout.createSequentialGroup()
                    .addComponent(flist)
                    .addGroup(layout.createParallelGroup()
                        .addComponent(edit)
                        .addComponent(grab)
                    )
                )
                .addComponent(status)
            )

        layout.setVerticalGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup()
                    .addComponent(flist)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(edit)
                        .addComponent(grab)
                    )
                )
                .addComponent(status)
            )

        layout.linkSize(SwingConstants.HORIZONTAL, [edit, grab])

        self.pack()

        self.setTitle("Windows")
        self.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
        self.setLocationRelativeTo(None)
        self.setVisible(True)


if __name__ == '__main__':
    Example()
4

2 に答える 2

0

これは、preferredSize のみを設定したためだと思います。したがって、好みのサイズのみを表示してサイズを変更します。フレームを小さく/大きくしたときにコンポーネントが追従するように、MinimumSize と MaximumSize も含める必要があります。

PS: hjek - 男、その人は GroupLayout について尋ねています。彼は BorderLayout について尋ねていませんでした。あなたの答えは非論理的です。

于 2014-07-09T18:31:10.260 に答える
0

BorderLayout はかなり単純です。次のようにします。

 from javax.awt import BorderLayout
 from javax.swing import JButton, JFrame
 someButton = JButton("ClickMe")
 frame = JFrame("Funky Jython Program")
 frame.setLayout(BorderLayout())
 frame.add(someButton,BorderLayout.NORTH)

フレームの上部に JButton を配置し、次のボタンには EAST、SOUTH、WEST、または CENTER を使用します。

于 2013-01-11T21:32:35.963 に答える