JInternalFrame不会出现在我的屏幕上

时间:2014-08-01 23:50:51

标签: java swing jframe jpanel jlayeredpane

按下按钮时,我试图让JInternalFrame出现在我的屏幕上,基本上是弹出效果。但是,按下按钮时,JInternalFrame不会出现在屏幕上。此外,当我调整屏幕大小时,所有元素都随之扩展,我想知道是否有办法让弹出窗口显示在屏幕上并保持布局管理器我现在还在原地,以便在调整窗口大小时元素也用它调整大小

public class testing2 implements ActionListener {

JButton buttonAppear = new JButton();
JLayeredPane LayeredPane = new JLayeredPane();


public static void main(String[] args) {
    new testing2();
}

public testing2() {



    LayeredPane = new JLayeredPane();
            BorderLayout borderlayoutpane = new BorderLayout();
            LayeredPane.setLayout(borderlayoutpane);
            JPanel mainPanel = new JPanel();
            BorderLayout borderlayout = new BorderLayout();
            mainPanel.setLayout(borderlayout);
            JButton button = new JButton("Button");
            mainPanel.add(button, "Center");
            buttonAppear = new JButton("Panel Appear");
            buttonAppear.addActionListener(this);
            mainPanel.add(buttonAppear, "South");
            LayeredPane.add(mainPanel, 2);
            JFrame frame = new JFrame("Testing");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setLayout(new BorderLayout());
            frame.add(LayeredPane);
            frame.setSize(400, 400);
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);
        }



@Override
public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    if(e.getSource() == buttonAppear)
    {
           JInternalFrame inFrame = new JInternalFrame("Internal Frame", true, true, true, true);
           inFrame.setBounds(10, 10, 200, 200);              
           inFrame.setVisible(true);
           LayeredPane.add(inFrame, 1);
    }

}

}

1 个答案:

答案 0 :(得分:3)

  基本上是弹出效果。

然后使用JDialog。 JInternalFrame旨在与JDesktopPane一起使用。

mainPanel.add(button, "Center");

不要将硬编码字符串用于约束。使用API​​提供的字段:

mainPanel.add(button, BorderLayout.CENTER);

另外,请遵循Java命名约定。变量名称不应以大写字符开头。保持一致。

不知道它是否会产生影响,但具有较高层数的组件会在具有较低索引的组件上绘制。所以我猜测面板(不透明)只会涂在内部框架的顶部。阅读How to Use Layered Panes上的Swing教程中的部分。另请阅读How to Use Root Panes部分,以便在分层窗格中找到“弹出窗口”的特殊变量。