我是Java初学者(1个月的经验),但喜欢它到目前为止!
我需要在Planning应用程序上实现一个我没有创建的功能,我需要使面板包含几天在滚动时保持固定(类似Excel的标题)。如何在Java中的JScrollPane中滚动时保持JPanel固定?
在寻找答案,我主要是觉得用JTable
方法,但问题是,我只跟01(JPanel
)(图中未显示使用JPanel
或MainPanel
,延伸JPanel
,包含在WindowPanel
(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
)停留只是蓝色。
实际上,在地方WindowPanel
的我需要显示填充MainPanel
,这是工作,当我做到这一点:
//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);
但头部保持蓝色,天头不固定,它只是低于标题,但其他一切都加载罚款,包括滚动条(不相关,所以不在图片)。 有关信息,下面的面板被称为customPanels的cellPanels形成:
我想我接近我的目标,但我测试了很多东西并没有什么充分的工作。 我在找人解释我做错了什么,并帮我解决它。
谢谢你的时间!