1

ジェパディ!を作成してプレイできるアプリケーションを作ろうとしています!ボード。GUIを作成しているときに、私は道に迷ったようです。JPanel(scrollPanel1)がJScrollPane(scrollPanel1)に表示されていないようです。スクロールバーを常に表示するようにスクロールバーポリシーを設定すると、スクロールバーが表示されるため、JScrollPaneが存在することは間違いありません。しかし、私はJPanelが中に現れているとは思いません。助けていただければ幸いです。

コードは次のとおりです。

import java.awt.*;
import javax.swing.*;

public class CreateNewBoardGUI {
    private JFrame mainFrame;
    private JPanel mainPanel;
    private JPanel boardInfo;
    private JLabel boardNameLabel;
    private JTextField boardNameField;
    private JTabbedPane catTab;
    private JPanel tabPanel1;
    private JPanel catNamePanel1;
    private JLabel catNameLabel1;
    private JTextField catNameField1;
    private JScrollPane scrollPane1;
    private JPanel scrollPanel1;
    private JPanel qPanel1;
    private JLabel qLabel1;
    private JTextField qField1;

    public void CreateNewBoardGUI(){
        mainFrame = new JFrame("Create new Jeopardy! board");
        mainPanel = new JPanel();
        boardInfo = new JPanel();
        boardNameLabel = new JLabel("What would you like this board to be called?");
        boardNameField = new JTextField();
        catTab = new JTabbedPane();
        tabPanel1 = new JPanel();
        catNamePanel1 = new JPanel();
        catNameLabel1 = new JLabel("What would you like the category to be called?");
        catNameField1 = new JTextField();
        scrollPane1 = new JScrollPane();
        scrollPanel1 = new JPanel();
        qPanel1 = new JPanel();
        qLabel1 = new JLabel("200 Point Question");
        qField1 = new JTextField();

        mainPanel.setLayout(new BorderLayout());
        boardInfo.setLayout(new BorderLayout());
        tabPanel1.setLayout(new BorderLayout());
        catNamePanel1.setLayout(new BorderLayout());
        scrollPanel1.setLayout(new BorderLayout());
        mainFrame.setSize(700, 900);
        mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        mainFrame.setResizable(false);
        mainFrame.setLocationRelativeTo(null);
        mainFrame.setVisible(true);

        qPanel1.add(qLabel1);
        qPanel1.add(qField1);
        scrollPanel1.add(qPanel1, BorderLayout.NORTH);
        scrollPane1.add(scrollPanel1);
        tabPanel1.add(scrollPane1, BorderLayout.CENTER);
        catNamePanel1.add(catNameField1, BorderLayout.CENTER);
        catNamePanel1.add(catNameLabel1, BorderLayout.NORTH);
        tabPanel1.add(catNamePanel1, BorderLayout.NORTH);
        mainPanel.add(catTab, BorderLayout.CENTER);
        boardInfo.add(boardNameField, BorderLayout.CENTER);
        boardInfo.add(boardNameLabel, BorderLayout.NORTH);
        mainPanel.add(boardInfo, BorderLayout.NORTH);
        mainFrame.add(mainPanel);

        catTab.addTab("Category 1", tabPanel1);





    }
}

前もって感謝します。

4

2 に答える 2

4

を取り外しますscrollPane1 = new JScrollPane();

代わりにこれを追加します(scrollPanel1インスタンスを作成した後):

scrollPane1 = new JScrollPane(scrollPanel1);

これにより、scrollPane1 が「ビューポート」として scrollPanel1 を持つようになります。

状況を確認するには、背景色を設定する必要があります scrollPanel1.setBackground(Color.red);
。パネルにさまざまな色を追加して、その動作を調べます。

タブパネルからスクロールバーを伸ばすとすぐにスクロールバーが追加されます。

注: 「null レイアウト」を参照してください。扱いやすくなるはずです。

これで問題が解決するかどうか、または問題が解決しない場合はお知らせください。

于 2012-08-10T23:19:08.593 に答える