我有一个简单的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),具有打开项目(白色集团)的相同显示但没有项目树。 我想不出怎么做,有什么想法吗?
答案 0 :(得分:-1)
我找到解决此显示问题的答案:
我的主面板上使用的FlowLayout
以某种方式阻止我使用jscrollpane
直接调整setSize()
的大小
所以我决定在我的MainFrame secondMainPanel
上设置一个辅助面板,而没有使用new JPanel(null);
我确实在其上添加了jscrollpane
,然后我可以毫无问题地调整它以正确显示。
我认为可能有更好的方法来修复它,但这个方法有效。