2
我打算在全屏模式下使用JInternalFrame作爲模態JDialog,但是,它在調用時並不會顯示。我需要將它添加到某個容器嗎?我嘗試將它添加到JOptionPane.showInternalMessage(...)中,但是因爲我想讓對話框在3秒後自動消失,所以這將不起作用,因爲JOptionPane對話框將保留在那裏,直到有人單擊確定。全屏模式下的JInternalFrame
有什麼想法?非常感謝。
我打算在全屏模式下使用JInternalFrame作爲模態JDialog,但是,它在調用時並不會顯示。我需要將它添加到某個容器嗎?我嘗試將它添加到JOptionPane.showInternalMessage(...)中,但是因爲我想讓對話框在3秒後自動消失,所以這將不起作用,因爲JOptionPane對話框將保留在那裏,直到有人單擊確定。全屏模式下的JInternalFrame
有什麼想法?非常感謝。
是的,您必須將其添加到您希望它成爲'內部'的容器中。
下面你有一個例子,它顯示你的這種行爲。您可以在這裏注意到,內部框架(在框架內按下鼠標時會出現/隱藏)不會被繪製在EAST面板上,因爲它在它的父邊界之外時被剪裁。
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class InternalFrameTest extends JPanel
{
private static final long serialVersionUID = 1L;
private JInternalFrame internalFrame;
public InternalFrameTest()
{
this.internalFrame = new JInternalFrame("Internal frame");
internalFrame.setLayout(new FlowLayout());
internalFrame.add(new JLabel("I am label"));
internalFrame.add(new JButton("Oi button"));
internalFrame.pack();
add(internalFrame);
}
public void showHideInternalFrame()
{
internalFrame.setVisible(!internalFrame.isVisible());
}
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
final InternalFrameTest ift = new InternalFrameTest();
ift.setBackground(Color.GREEN);
JFrame f = new JFrame();
f.addMouseListener(new MouseAdapter()
{
@Override
public void mousePressed(MouseEvent e)
{
super.mousePressed(e);
ift.showHideInternalFrame();
}
});
JPanel cp = new JPanel(new BorderLayout());
cp.add(ift);
JPanel eastP = new JPanel();
eastP.add(new JLabel("EAST"));
eastP.setBackground(Color.YELLOW);
cp.add(eastP, BorderLayout.EAST);
f.setContentPane(cp);
f.setSize(400, 300);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
});
}
}
請參閱[如何使用內部框架](http://download.oracle.com/javase/tutorial/uiswing/components/internalframe.html)。 – trashgod 2011-05-25 09:42:53