1

スタック交換を見回すと、これに対する良い答えが見つかりません。私が見た同様の質問のコードのほとんどは、エラーが簡単に入り込む可能性のある巨大で肥大化しているように見えます。同じ間違いをしているかどうかはわかりません。

私は 2 つのクラス (およびインターフェイス) しか持っていません。私の問題は、私の JTable が空白であることです。

ここに画像の説明を入力

これが私のコードです:

プログラムを起動する

public class Launcher {


    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                IViewManager.Util.getInstance();
            }
        });
    }
}

ViewManager フレームを開始する

public class ViewManager implements IViewManager {

    JFrame frame = null;
    JTabbedPane myListTabs = null;
    ComicsListPane myComicsListPane = null;

    public ViewManager(){

    //Create and set up the window.
    frame = new JFrame("My List Agregator");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    //Add the Tabbed pane for lists.
    myListTabs = new JTabbedPane();
    myComicsListPane = new ComicsListPane();
    myListTabs.add(myComicsListPane);
    myListTabs.setTitleAt(myListTabs.getTabCount()-1, "title");
    frame.getContentPane().add(myListTabs);

    //Display the window.
    frame.pack();
    frame.setVisible(true);
    }
}

コミック一覧ペイン

public class ComicsListPane extends JPanel {
    /**
     * 
     */
    private static final long serialVersionUID = -5207104867199042105L;
    JTable myComicsTable = null;

        public ComicsListPane() {
                //Create the column names and data
            String[] columnNames = {"Comic Title",
                    "Volume",
                    "Edition",
            "Purchased"};

            Object[][] data = {
                    {"The Amazing Spider-man", new Integer(3),
                        new Integer(679), new Boolean(false)},
                        {"The Amazing Spider-man", new Integer(3),
                            new Integer(680), new Boolean(false)}
            };
            //Create the table
            myComicsTable = new JTable(data, columnNames);
            myComicsTable.setPreferredScrollableViewportSize(new Dimension(750, 110));
            myComicsTable.setFillsViewportHeight(true);
            myComicsTable.setFillsViewportHeight(true);

            JScrollPane scrollPane = new JScrollPane(myComicsTable);        
            scrollPane.add(myComicsTable);
            scrollPane.setPreferredSize(new Dimension(450, 110));
            this.add(scrollPane, BorderLayout.CENTER);
        }
    }

どこが間違っているのかわかりません。ほとんどの場合、Java Doc チュートリアルからコピーしました。

誰かがJavaの初心者にエラーを指摘するのを手伝ってもらえますか?

4

3 に答える 3

5

を作成するときの問題のようですJScrollPane

JScrollPane scrollPane = new JScrollPane(myComicsTable);        
scrollPane.add(myComicsTable);

ここの 2 行目は必要ありません。既に を使用して を構築しJScrollPaneているJTableため、それを に追加する必要はありませんJScrollPane。確かに - これは のadd()メソッドを使用していContainerます。あなたが見ている動作を引き起こしている正確な理由は、javadocs/source をより詳細に見ないとわかりません。

余談ですが、GUI を使用している場合 (実際には一般的に)、コードを最小のチャンクに絞り込むのが最善です。つまり、作成する方法JTable- 表示できますか? 次に、それを - でラップする方法は、JScrollPaneあなたが望むように表示されますか? などなど

于 2012-08-18T22:29:13.057 に答える
2

この行にコメントしてください:

scrollPane.add(myComicsTable);

テーブル データが表示されます。テーブルをスクロールするには、スクロール領域を table- で初期化しましたnew JScrollPane(myComicsTable);。スクロールを有効にするには、これで十分です。スクロールの詳細については、スクロールペインの使用方法を参照してください。

于 2012-08-18T22:28:19.693 に答える
1

次の行をコメントアウトしてみてください。

scrollPane.add(myComicsTable);
于 2012-08-18T22:32:49.567 に答える