初始化后JScrollPane+JTree显示的java问题
我有一个简单的swing应用程序,可以通过多个按钮管理特定类型的项目,并在底部打印项目树,在应用程序中打开项目时,请参见下面的屏幕截图: App screenshoot with project opened
问题是,当没有打开任何项目时,我会得到如下结果: App screenshoot without project opened
HMI很简单,如下所示:
public class Desktop extends JFrame implements ActionListener {
public Desktop() {
JButton newProject, generate, quit, bAddToClassPath, openProject, saveProject;
JPanel mainPanel;
JScrollPane jscrollpane;
super("MainWindow");
setLookAndFeel();
setSize(330, 440);
ParamMainPanel();
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new Desktop();
}
});
}
public static void ParamMainPanel() {
mainPanel = new JPanel(new FlowLayout());
// BUTTONS PARAM
newProject = new JButton("Nouveau projet");
generate = new JButton("Générer...");
quit = new JButton("Quitter");
openProject = new JButton ("Ouvrir projet");
saveProject = new JButton ("Sauvegarder");
bAddToClassPath = UIUtil.iconButton();
bAddToClassPath.setActionCommand("setCP");
bAddToClassPath.addActionListener(this);
mainPanel.add(bAddToClassPath);
newProject.addActionListener(this);
newProject.setActionCommand("newP");
generate.addActionListener(this);
generate.setActionCommand("gen");
quit.addActionListener(this);
quit.setActionCommand("qui");
openProject.addActionListener(this);
openProject.setActionCommand("openP");
saveProject.addActionListener(this);
saveProject.setActionCommand("save");
mainPanel.add(newProject);
mainPanel.add(generate);
mainPanel.add(openProject);
mainPanel.add(saveProject);
mainPanel.add(quit);
// PROJECT TREE
jscrollpane = new JScrollPane(new JTree());
jscrollpane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
jscrollpane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
jscrollpane.setMinimumSize(new Dimension(50, 50));
jscrollpane.setLocation(4,61);
jscrollpane.setSize(306,322);
mainPanel.add(jscrollpane);
}
}
因此,我想要的是在应用程序启动时,而不是在没有打开项目的情况下让外观不好的显示JTree(进入jscrollpane),在打开项目的情况下让显示相同(白色区域),但里面没有项目树。 我不知道怎么做,有什么想法吗
# 1 楼答案
下面是我找到的解决此显示问题的答案:
在我的主面板上使用的
FlowLayout
以某种方式阻止我直接使用setSize()
调整我的jscrollpane
大小 因此,我决定在我的大型机上secondMainPanel
有一个辅助面板,而不使用new JPanel(null);
进行特定布局我确实在它上面添加了
jscrollpane
,然后我可以毫无问题地调整它的大小以获得正确的显示我认为可能有更好的方法来修复它,但这一个有效