2017-10-12 1 views
0

私はJavaの初心者です(1ヶ月の経験)が、今のところ好きです!
作成していないPlanningアプリケーションで機能を実装する必要があります。スクロールしている間に固定された日数を含むパネル(Excel風のヘッダー)を作成する必要があります。 TopPanelJPanel)(その画像に表示されないとWindowPanelJPanel)に含まJavaのJScrollPaneでスクロールしながらJPanelを固定する方法は?

回答を探している間、私はほとんどJTableを使用する方法を見つけることが、問題は、私はJPanel又はMainPanelを使用することで、JPanelを延びているが、既に固定されています)。 私はsetColumnHeaderView()メソッドを使用していますが、これは唯一の結果を示すものです。この方法で

//MainWindow 
    MainPanel mainPanel = new MainPanel(model); 
    mainPanel.init(); //fill the mainPanel 
    windowPanel.add(mainPanel); 

    JViewport blabla = new JViewport(); 
    blabla.setPreferredSize(mainPanel.getPreferredSize()); 
    blabla.setView(mainPanel); 
    //JViewport blabla2 = new JViewport(); 
    //blabla2.setPreferredSize(windowPanel.getPreferredSize()); 

    scroll = new JScrollPane(windowPanel); 
    scroll.setColumnHeaderView(blabla); 


    getContentPane().add(scroll); 
    this.addMouseListener(new FocusSetterListener()); 

    this.pack(); 
    this.setVisible(true); 

、私は右のヘッダを取得するが、何のスクロールバー、および下のパネルは、(ここではWindowPanel)ちょうど青とどまるません。

 //MainWindow 
    MainPanel mainPanel = new MainPanel(model); 
    mainPanel.init(); //fill the mainPanel 
    windowPanel.add(mainPanel); 

    JViewport blabla = new JViewport(); 
    blabla.setPreferredSize(mainPanel.getPreferredSize()); 
    blabla.setView(mainPanel); 

    scroll = new JScrollPane(mainPanel); 
    scroll.setColumnHeaderView(blabla); 

    getContentPane().add(scroll); 
    this.addMouseListener(new FocusSetterListener()); 

    this.pack(); 
    this.setVisible(true); 

しかし、ヘッダは青いままで、日ヘッダではありません:私はそれを行う際に努めて埋めMainPanelを、表示する必要がWindowPanelの代わりに、実際に

ResultScreenshot1

、固定されている、それはヘッダーのすぐ下ですが、他のものはスクロールバーを含めてうまく読み込んでいます。 情報については、以下のパネルがcellPanels呼ばcustomPanelsで形成されている:

Result Screenshot 2

Result Screenshot 2

私は私が私の目標に近いだと思うが、私は多くのものと完全に働いていた何をテストしました。 私は間違っていることを私に説明してくれる人を探しています。

ありがとうございました!

答えて

0

私はMainPanelのコピーをロードし、ヘッダを除いて、実際の1の後ろにそれを隠して、ダブルアクションを防ぐために、すべての機能にブール値を適用受け入れ可能な解決策、

を見つけました。 それは機能しましたが、いくつかの機能が必須であったため、デバッグがかなり難しかったです。

私はまだ望ましくない二重ローディングの最適化の問題があるため、より良い答えを探していますが、少なくとも今は動作しています!

関連する問題