是否可以将JDesktopPane
和JInternalFrame
添加到JPanel
,如果是这样,我该怎么做呢。我尝试添加它,但它无法正常工作。
答案 0 :(得分:4)
"是否可以将JDesktopPane和JInternalFrame添加到JPanel"
当然可以
desktop = createDesktopPane();
JInternalFrame iFrame = createInternalFrame();
desktop.add(iFrame);
JPanel panel = new JPanel(new BorderLayout());
panel.setBorder(new TitledBorder("DesktopPane"));
panel.add(desktop);
import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.Image;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.border.TitledBorder;
public class JDesktopPaneDemo1 {
private static final String URL_ONE = "http://www.hdbackgroundspoint.com/wp-content/uploads/2013/12/16/345t34.jpeg";
private static final String URL_TWO = "http://www.hdbackgroundspoint.com/wp-content/uploads/2013/09/hh.jpeg";
private Image image;
private JDesktopPane desktop;
public JDesktopPaneDemo1() {
desktop = createDesktopPane();
JInternalFrame iFrame = createInternalFrame();
desktop.add(iFrame);
JPanel panel = new JPanel(new BorderLayout());
panel.setBorder(new TitledBorder("DesktopPane"));
panel.add(desktop);
JFrame frame = new JFrame("Desktop Background");
frame.setContentPane(panel);
frame.setSize(500, 350);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
iFrame.setVisible(true);
}
public JDesktopPane createDesktopPane() {
JDesktopPane pane = new JDesktopPane() {
private Image image;
{
try {
image = ImageIO.read(new URL(URL_ONE));
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
}
};
return pane;
}
private JInternalFrame createInternalFrame() {
JInternalFrame frame = new JInternalFrame();
frame.setSize(200, 200);
return frame;
}
public static void main(String[] args) {
for (UIManager.LookAndFeelInfo laf : UIManager
.getInstalledLookAndFeels()) {
if ("Nimbus".equals(laf.getName())) {
try {
UIManager.setLookAndFeel(laf.getClassName());
} catch (ClassNotFoundException | InstantiationException
| IllegalAccessException
| UnsupportedLookAndFeelException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new JDesktopPaneDemo1();
}
});
}
}