/ / जावा विधि विंडोज़ पर काम करती है लेकिन Macintosh पर नहीं? - जावा, स्विंग, जिनेनफ्रेम

जावा विधि विंडोज़ पर काम करती है लेकिन मैकिनटोश नहीं? - जावा, स्विंग, jinternalframe

मेरे पास एक वास्तविक अजीब विधि थी जिसे छिपाने के लिए उपयोग किया जाता है JInternalFrame"शीर्षक बार। अब दुविधा विंडोज प्लेटफॉर्म पर विधि कार्यों के नीचे है,

((javax.swing.plaf.basic.BasicInternalFrameUI) aXInternalFrame.getUI()).setNorthPane(null);

लेकिन मैकिंटोश पर नहीं! किसी भी विशेषज्ञ के पास कोई भी विचार है जो आंतरिक प्रक्रिया की व्याख्या कर सकता है जो इस पद्धति को मैक पर प्रयोग करने योग्य नहीं बनाता है।

और क्या कोई ऐसा तरीका है जो टाइटलबार को छिपाने के लिए दोनों प्लेटफॉर्म पर काम कर सकता है JInternalFrame?

धन्यवाद

उत्तर:

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

मैक ओएस एक्स पर, का एक उदाहरण com.apple.laf.AquaInternalFrameUI आंतरिक फ्रेम की उपस्थिति को परिभाषित करता है। आप सेटिंग करके असमानता को कम कर सकते हैं isPalette संपत्ति और मैक ओएस एक्स पर फ्रेम आइकन को विशेष रूप से अक्षम करना, जैसा कि नीचे दिखाया गया है।

यहां छवि विवरण दर्ज करें

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.plaf.basic.BasicInternalFrameUI;

/** @see http://stackoverflow.com/questions/7218971 */
public class InternalFrame {

private static final int DELTA = 40;
private JDesktopPane desktop = new JDesktopPane();
private int offset = DELTA;

public InternalFrame() {
JFrame f = new JFrame("Add Frame");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setPreferredSize(new Dimension(400, 400));
JPanel p = new JPanel();
p.add(new JButton(new AbstractAction("Add") {

@Override
public void actionPerformed(ActionEvent e) {
createInternalFrame();
}
}));
f.add(p, BorderLayout.SOUTH);
createInternalFrame();
f.add(desktop, BorderLayout.CENTER);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}

private void createInternalFrame() {
JInternalFrame internalFrame = new JInternalFrame(
"Internal Frame");//, true, true, true, true);
desktop.add(internalFrame);
internalFrame.setLocation(offset, offset);
offset += DELTA;
if (System.getProperty("os.name").startsWith("Mac OS")) {
internalFrame.putClientProperty("JInternalFrame.isPalette", true);
} else {
((BasicInternalFrameUI) internalFrame.getUI()).setNorthPane(null);
}
internalFrame.add(createTabbedPane());
internalFrame.pack();
internalFrame.setVisible(true);
}

// take up some space
private JTabbedPane createTabbedPane() {
JTabbedPane jtp = new JTabbedPane();
createTab(jtp, "One");
createTab(jtp, "Two");
return jtp;
}

private void createTab(JTabbedPane jtp, String s) {
jtp.add(s, new JLabel("TabbedPane " + s, JLabel.CENTER));
}

public static void main(String args[]) {
EventQueue.invokeLater(new Runnable() {

@Override
public void run() {
InternalFrame myInternalFrame = new InternalFrame();
}
});
}
}

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

यह स्विंग का एक बालों वाला कोना हो सकता है। यह कार्यक्षमता नहीं थी "जब तक कि मुझे याद है जावा 1.5 तक स्विंग नहीं हुई।

क्या आपने Frame.setUndecorated विधि की कोशिश की है?

http://download.oracle.com/javase/1.5.0/docs/api/java/awt/Frame.html#setUndecorated%28boolean%29

अगर यह काम नहीं करता है, तो आपको नीचे की ओर देशी विंडो ऑब्जेक्ट पर कुछ जेएनआई करने की आवश्यकता हो सकती है। मुझे 1.4 जेवीएम के साथ खिड़कियों पर समान कार्यक्षमता के लिए ऐसा करना पड़ा।