有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

初始化后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) 个答案

  1. # 1 楼答案

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

    在我的主面板上使用的FlowLayout以某种方式阻止我直接使用setSize()调整我的jscrollpane大小 因此,我决定在我的大型机上secondMainPanel有一个辅助面板,而不使用new JPanel(null);进行特定布局

    我确实在它上面添加了jscrollpane,然后我可以毫无问题地调整它的大小以获得正确的显示

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