1

我想显示一个 textArea 显示一些文本(将显示日志行),并在其上方放置一个动画 gif。我尝试了这里描述的解决方案,但我得到的只是一个灰屏。提示?

public class TestLayeredPanes {

    private JFrame frame = new JFrame();
    private JLayeredPane lpane = new JLayeredPane();

    public TestLayeredPanes() {
        frame.setPreferredSize(new Dimension(600, 400));
        frame.setLayout(new BorderLayout());
        frame.add(lpane, BorderLayout.CENTER);

        //Build the animated icon
        JLabel buildingIcon = new JLabel();
        buildingIcon.setIcon(new ImageIcon(this.getClass().getResource(
                "/com/ct/tasks/cmviewer/gui/progress_bar.gif")));       
        JPanel iconPanel = new JPanel();
        iconPanel.add(buildingIcon);

        //Build the textArea
        JTextArea textLog = new JTextArea("Say something");     
        JPanel textPanel = new JPanel();
        textPanel.add(new JScrollPane(textLog));

        //Add the panels to the layered pane
        lpane.add(textPanel, 0);
        lpane.add(iconPanel, 1);

        frame.pack();
        frame.setVisible(true);
    }

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

}
4

3 回答 3

1

尝试将动画 GIF 放在根窗格的玻璃窗格上:

http://download.oracle.com/javase/tutorial/uiswing/components/rootpane.html

于 2011-01-03T10:30:23.190 回答
1

JXLayer 更容易做到这一点。查看JXLayer示例。

你也可以看看XSwingX的代码

于 2011-01-03T11:45:35.743 回答
1

既然您从一个工作示例开始,为什么要从您复制的示例中删除代码行?

分层窗格不使用布局管理器,因此组件的大小为 (0, 0),因此没有可显示的内容。示例中的 setBounds(...) 方法是有原因的。

于 2011-01-03T16:19:33.047 回答