-1

過去 2 日間の最後の数時間、GUI が正しく動作しない理由を突き止めようとしました。ここで私は皆さんに会いに行き、皆さんが私を助けてくれるかどうかを確認します。

今私がやろうとしているのは、テキストベースのゲームです。単純ですよね? 画面の左側に並べられたボタンを使用したいのですが、下部にあなたの健康とすべての楽しいものを配置し、ゲームのメインであるテキストを中央に配置しますが、私が何をしたとしてもそれを正しくフィットさせることができなかったので、pack() に出くわしたので試してみました。そうです...それは本来の機能を果たしました。悲しいことに、今は 1 つの単語しかなく、画面は小さいです。どうすれば画面を大きくし、大きく保つことができるでしょうか?

これを編集して、テキストエリアを含む私のコードの断片をあなたに投げます(私は仕事をしていない間、なんと2日間Javaを使用していることに注意してください)

  JTextArea textarea = new JTextArea("example");

    frame.add(textarea);
    //frame.pack();

そして、ここで私はそれをいじっているのでコメントアウトしました。

他に何か見てみたいことはありますか?

4

3 に答える 3

1

うまくいかない可能性のあることがたくさんありますが、コードを追加しないと、正確な問題を特定するのは困難です...

いくつかのことが頭に浮かびます...

  • 適切なレイアウトマネージャー、さらには複合レイアウトマネージャーを使用する
  • JTextArea行や列などの使用可能なスペースを定義できるように、に追加情報を提供します
  • にを追加しJTextAreaて、JScrollPane実際に使用可能になるよりも多くのスペースを突然占有しないようにします。

ここに画像の説明を入力してください

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class TestLayout21 {

    public static void main(String[] args) {
        new TestLayout21();
    }

    public TestLayout21() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(new TestPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public class TestPane extends JPanel {

        public TestPane() {
            setLayout(new BorderLayout());

            JPanel actions = new JPanel(new GridBagLayout());
            GridBagConstraints gbc = new GridBagConstraints();
            gbc.gridwidth = GridBagConstraints.REMAINDER;
            gbc.fill= GridBagConstraints.HORIZONTAL;

            actions.add(new JButton("Walk"), gbc);
            actions.add(new JButton("Run"), gbc);
            actions.add(new JButton("Jump"), gbc);
            actions.add(new JButton("Eat"), gbc);
            actions.add(new JButton("Drink"), gbc);

            add(actions, BorderLayout.WEST);
            add(new JProgressBar(), BorderLayout.SOUTH);

            JTextArea textArea = new JTextArea(20, 40);
            add(new JScrollPane(textArea));

        }

        @Override
        public Dimension getPreferredSize() {
            return new Dimension(200, 200);
        }
    }

}
于 2013-03-20T07:47:23.300 に答える
0

Pack は実際、フレームまたはパネルを、その中にあるコンポーネントに合わせて必要なだけ大きくするだけです。preferredSize() メソッドを試してみて、まだ機能しない場合はコードを投稿してください。

于 2013-03-20T07:30:23.040 に答える
0

オブジェクトまたはパネル/フレーム自体に適切なサイズを設定してみてください。

myPanel.preferredSize(new Dimension(1000,500));

また

myFrame.preferredSize(new Dimension(1000,500));

また

myTextArea.preferredSize(new Dimension(300,200));
于 2013-03-20T07:22:00.597 に答える