я создал SelectMethodFrame, который расширяет JFrame, который может иметь только один экземпляр:экземпляр JFrame не визуализировать добавленного компонента
public class SelectMethodFrame extends JFrame {
private JSplitPane mainWindow = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
public JSplitPane getMainWindow() {
return mainWindow;
}
public void setMainWindow(JSplitPane mainWindow) {
this.mainWindow = mainWindow;
}
private static SelectMethodFrame instance = null;
public static SelectMethodFrame getInstance() {
if (instance == null)
instance = new SelectMethodFrame();
return instance;
}
public void setTab(JComponent panelConsumption, JComponent panelCpu,
JComponent panelMemo, JComponent panelScreen,
JComponent panelMobile, JComponent panelWifi) {
TabbedView tab = new TabbedView(panelConsumption, panelCpu, panelMemo,
panelScreen, panelMobile, panelWifi);
mainWindow.setRightComponent(tab);
}
public void setTree(JTree tree) {
mainWindow.setLeftComponent(new JScrollPane(tree));
this.pack();
this.setLocationRelativeTo(null);
this.setVisible(true);
getContentPane().add(mainWindow, java.awt.BorderLayout.CENTER);
setExtendedState(MAXIMIZED_BOTH);
setMinimumSize(new Dimension(800, 500));
this.setTitle(Constants.APP_CHECKBOXTREE);
}
}
создать рамку в одном классе, таким образом:
SelectMethodFrame frame = new SelectMethodFrame();
frame.setTree(treeSelection);
И все отлично работает, но когда я хочу добавить еще один компонент в свою рамку в другом классе:
SelectMethodFrame.getInstance().setTab(panelConsumption, panelCpu,
panelMemo, panelScreen, panelMobile, panelWifi);
i t не показывает. Я пробовал с
SelectMethodFrame.getInstance().repaint();
SelectMethodFrame.getInstance().revalidate();
но он не работает. Он показывает компонент только в том случае, если он создан в конструкторе. В чем проблема?
Я изменил код и поставить:
общественного SelectMethodFrame() {
this.pack();
this.setLocationRelativeTo(null);
this.setVisible(true);
getContentPane().add(mainWindow, java.awt.BorderLayout.CENTER);
setExtendedState(MAXIMIZED_BOTH);
setMinimumSize(new Dimension(800, 500));
this.setTitle(Constants.APP_CHECKBOXTREE);
}
вместо этого в
public void setTree(JTree tree) {
mainWindow.setLeftComponent(new JScrollPane(tree));
this.pack();
this.setLocationRelativeTo(null);
this.setVisible(true);
getContentPane().add(mainWindow, java.awt.BorderLayout.CENTER);
setExtendedState(MAXIMIZED_BOTH);
setMinimumSize(new Dimension(800, 500));
this.setTitle(Constants.APP_CHECKBOXTREE);
}
теперь открывает его в другом кадре, но показывает только добавили последний компонент , Это так странно.
может быть связано? http://stackoverflow.com/questions/22577924/jframe-with-tabs-is-not-being-displayed – Seephor