/ / JSplitPane पेंटिंग सही नहीं - जावा, स्विंग, jsplitpane

जेएसप्लिटपेन पेंटिंग सुधार नहीं - जावा, स्विंग, जेएसप्लिपेन

मेरे आवेदन में, मैं ए JFrame प्रदर्शित करना a JSplitPane, विभाजन के साथ VERTICAL_SPLIT। शीर्ष एक प्रदर्शित कर रहा है JLabel, और नीचे एक प्रदर्शित कर रहा है JInternalFrame। दो समस्याएं पैदा हो रही हैं।

  1. The JLabel प्रदर्शित कर रहा है, लेकिन JInternalFrame नहीं है।

    2. मैं करने के लिए आवेदन का आकार परिवर्तन किया है JSplitPane बिल्कुल प्रदर्शित करें

मेरा मानना है कि यह दोनों के एक गलत उपयोग से जुड़ा हुआ है JSplitPane. हालांकि, मैं क्या बाहर काम करने में असमर्थ है । क्या मैं इस मुद्दे पर कुछ मदद कर सकता हूं?

पुनश्च मैं परीक्षण को यकीन है कि बनाने के लिए चला है GUIWindow.getInsideFrame() नहीं लौट रहा है nullinstanceof अंत में चेक कह रहे है कि फलक में दोनों घटक मौजूद है और उस प्रकार के हैं ।आप सभी की मदद के लिए बहुत बहुत धंयवाद:

protected static void newWindow(GUIFrame window) {
SwingUtilities.invokeLater(new Runnable(){

@Override
public void run() {
JSplitPane pane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
JInternalFrame intFrame = window.getInsideFrame();
pane.setRightComponent(intFrame);
pane.setLeftComponent(new JLabel(window.getDescription()));
synchronized(lock){
frame.remove(currentPane);
frame.add(pane);
}
synchronized(lock){
frame.revalidate();
pane.setVisible(true);
frame.repaint();
if(window instanceof ColourFrameShower) return;
currentWindow = window;
currentPane = pane;
currentFrame = intFrame;
}
if(pane.getLeftComponent() instanceof JLabel) System.out.println("JLabel exists!");
else System.out.println("JLabel does not exist!");

if(pane.getRightComponent() instanceof JInternalFrame) System.out.println("JInternalFrame exists!");
else System.out.println("JInternalFrame does not exist!");
}

});
}

संपादित करें: मैं एक फोन के साथ समस्या 2 फिक्स्ड frame.revalidate() दूसरे की शुरुआत में synchronised(lock) ब्लॉक. इसे कोड में शामिल किया गया है ।

उत्तर:

उत्तर № 1 के लिए 1

जैसा कि मैंने तुंहें टिप्पणी में कहा था, तुम बस का उपयोग करने की आवश्यकता setVisible(true) तुम्हारे ऊपर JInternalFrame, और यह आपके द्वारा विचार नहीं किया जाएगा JSplitPane.

यह जावा स्विंग पर एक बहुत आम गलती!

मुझे खुशी है कि यह तुंहारी मदद कर रहा हूं;)


जवाब के लिए 0 № 2

ResizeWeight सेट करने का प्रयास करें: फलक. setResizeWeight (0.5);