我有一个主类,在某些点上调用另一个类,使用如下构造函数。
构造函数创建GUI,我认为应该显示它,但它不会。为什么会这样?
public ModPackManager(){
System.out.println("New modpackmanager");
setUndecorated(true);
setBounds(100, 100, 350, 87);
getContentPane().setLayout(new BorderLayout());
contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
getContentPane().add(contentPanel, BorderLayout.CENTER);
contentPanel.setLayout(null);
{
JLabel lblDownloadingModPack = new JLabel("Downloading and installing modpack, please wait...");
lblDownloadingModPack.setHorizontalAlignment(SwingConstants.CENTER);
lblDownloadingModPack.setBounds(10, 11, 330, 14);
contentPanel.add(lblDownloadingModPack);
}
progressBar = new JProgressBar();
progressBar.setBounds(10, 48, 330, 24);
contentPanel.add(progressBar);
label = new JLabel("0%");
label.setHorizontalAlignment(SwingConstants.CENTER);
label.setBounds(10, 29, 330, 14);
contentPanel.add(label);
try {
installMods(getSelectedModPack());
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
答案 0 :(得分:1)
为什么会这样?
尝试使用setBounds(..)
而不是使用布局(使用填充和边框)。
答案 1 :(得分:0)
你永远不会展示任何东西,你只需要设置它。
虽然还不完全清楚你正在做什么,或者你正在使用什么类,如果它是JFrame
:
pack();
setVisible(true);
您可能希望在开发过程中注释掉setUndecorated(true)
- 它可能会让事情无法查看/找到。为了避免窗口管理器调整大小,可能是最小的:
setMinimumSize(new Dimension(350, 200));
我不确定标签周围的虚假块是什么。
答案 2 :(得分:0)
假设ModPackManager是一个JFrame,您应该能够通过使用:
使其可见setVisible(true);
只需在构造函数中的其他代码之后调用它。让我们知道它是怎么回事。