栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

jScrollPane无法添加组件

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

jScrollPane无法添加组件

您正在混合重量(AWT)组件和轻量(Swing)
组件,这是不可取的,因为它们往往不能很好地配合使用。

JScrollPane
包含一个
JViewPort
,您可以在上面添加一个子组件,也
就是视图。

因此,该呼叫

jScrollPane.getViewport().setLayout(new FlowLayout(FlowLayout.CENTER))
;实际上是在设置
JViewPort
布局
管理器,实际上不建议这样做。

您应该做的是创建要添加到滚动窗格的组件,
设置其布局,并将其所有子组件添加到其中,然后将其添加到
滚动窗格。如果需要,您可以在以后的阶段将组件添加到“视图”中,
但这取决于您…

// Declare "view" as a class variable...view = new JPanel(); // FlowLayout is the default layout manager// Add the components you need now to the "view"JScrollPane scrollPane = new JScrollPane(view);

Now you can add new components to the view as you need…

view.add(...);

如果您不想维护对的引用view,则可以通过调用进行访问,

JViewport#getView
这将返回由
查看端口管理的组件。

JPanel view = (JPanel)scrollPane.getViewPort().getView();

工作实例

这对我来说很好

nb- view.validate()

添加新组件之后,我将代码添加到了您可能没有的代码中……

public class TestScrollPane01 {

public class TestScrollPane01 {    public static void main(String[] args) {        new TestScrollPane01();    }    public TestScrollPane01() {        EventQueue.invokeLater(new Runnable() { @Override public void run() {     try {         UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());     } catch (Exception ex) {     }     Jframe frame = new Jframe("Testing");     frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);     frame.setLayout(new BorderLayout());     frame.add(new MainPane());     frame.pack();     frame.setLocationRelativeTo(null);     frame.setVisible(true); }        });    }    public class MainPane extends JPanel {        private JScrollPane scrollPane;        private int count;        public MainPane() { setLayout(new BorderLayout()); scrollPane = new JScrollPane(new JPanel()); ((JPanel)scrollPane.getViewport().getView()).add(new JLabel("First")); add(scrollPane); JButton add = new JButton("Add"); add.addActionListener(new ActionListener() {     @Override     public void actionPerformed(ActionEvent e) {         JPanel view = ((JPanel)scrollPane.getViewport().getView());         view.add(new JLabel("Added " + (++count)));         view.validate();     } }); add(add, BorderLayout.SOUTH);        }        @Override        public Dimension getPreferredSize() { return new Dimension(200, 200);        }    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/437808.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号