初始化后,JScrollPane + JTree显示问题

时间:2017-05-18 09:37:15

标签: java jscrollpane jtree

我有一个简单的swing应用程序,它可以管理具有多个JButton的特定类型的项目,并在底部打印项目树,在App中打开项目时,请参阅下面的屏幕截图: 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);
  }

}

所以我想要的是在App启动时,而不是在没有项目打开的情况下看起来很糟糕的显示JTree(进入jscrollpane),具有打开项目(白色集团)的相同显示但没有项目树。 我想不出怎么做,有什么想法吗?

1 个答案:

答案 0 :(得分:-1)

我找到解决此显示问题的答案:

我的主面板上使用的FlowLayout以某种方式阻止我使用jscrollpane直接调整setSize()的大小 所以我决定在我的MainFrame secondMainPanel上设置一个辅助面板,而没有使用new JPanel(null);

的特定布局

我确实在其上添加了jscrollpane,然后我可以毫无问题地调整它以正确显示。

我认为可能有更好的方法来修复它,但这个方法有效。