`
leongod
  • 浏览: 63993 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JPanel放置到JScrollPane里面并显示滚动条

阅读更多

一开始,我是知道不能直接在JScrollPane对象里用add()的,需要获取它的视图板
getViewport();这是一个JViewport对象,然后在这上面添加,而且它不能添加轻量级组件。
  我弄了一个JPanel,上面用网格布局10行1列的,本来想,把这个板添加到Viewport上就行了,结果发现,没有出现滚动条,于是我设置Viewport的布局方式,用尽了都不行。比如说用NULL布局吧,然后把Panel设长,结果Panel确实变长了,但滚动条不出来
 
  经过费心苦想,我直接设置了一下Panel的setPerferredSize(Dimension dim),dim的参数我用的是Viewport的getDemension所得。这下好了,哈哈,安装上去实现了滚动。
 
===============
附上一个例子
 
因为scrollPane是根据里面的子控件的preferredSize来确定滚动条的。
让image尺寸变化时,scrollPane能得到新的数据。
解决方式有两种,一种是改变大小时重新设置JPanel的preferred size;
一种是重载getPreferredSize()方法,按照需要返回,楼主的情况可以返回当前
图片的大小的Dimension。
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

public class ScrollPaneDemo extends JFrame implements MouseListener {

        ImagePanel jp;
       
        JScrollPane jsp;

        public ScrollPaneDemo() {
                super("JScrollPane Demo");
                jp = new ImagePanel();
                jp.setPreferredSize(new Dimension(600, 400));
                jsp = new JScrollPane(jp);
                jp.addMouseListener(this);
                getContentPane().add(jsp);
                setSize(640, 480);
                setDefaultCloseOperation(EXIT_ON_CLOSE);
                setVisible(true);
        }

        public void mouseClicked(MouseEvent e) {
                System.out.println("mouseClicked");
                jp.enlarge();
                jp.setPreferredSize(jp.getPreferredSize());
                jsp.validate();
        }

        public void mousePressed(MouseEvent e) {
                // System.out.println("mousePressed");
        }

        public void mouseReleased(MouseEvent e) {
                // System.out.println("mouseReleased");
        }

        public void mouseEntered(MouseEvent e) {
                // System.out.println("mouseEntered");
        }

        public void mouseExited(MouseEvent e) {
                // System.out.println("mouseExited");
        }

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

class ImagePanel extends JPanel {
        private Image image;

        private Dimension theSize = new Dimension(600, 400);

        public void setImage(Image image) {
                this.image = image;
                this.repaint();
        }

        public Image getImage() {
                return this.image;
        }

        public void paintComponent(Graphics g) {
                ImageIcon img = new ImageIcon("Winter.jpg");
                g.drawImage(img.getImage(), 0, 0, theSize.width, theSize.height, null);
        }

        public void enlarge() {
                theSize.width = (theSize.width * 101) / 100;
                theSize.height = (theSize.height * 101) / 100;
                setSize(theSize);
        }
       
        public Dimension getPreferredSize() {
                return this.theSize;
        }
}

分享到:
评论

相关推荐

    swing组件JScrollPane滚动条实例代码

    标题“Swing组件JScrollPane滚动条实例代码”和描述“主要介绍了Swing组件JScrollPane滚动条实例代码,分享了两个相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下”表明,本文将深入...

    给txtQueryResult加滚动条

    - `setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED)`和`setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED)`分别设置了垂直和水平滚动条的显示策略。这意味着当...

    java实验报告4.docx

    调整监听器(AdjustmentListener)被添加到每个滚动条上,以便在值变化时更新颜色。同时,实验还演示了如何创建一个简单的菜单栏,包含“剪贴”、“复制”、“粘贴”和“退出”菜单项,并实现了相应的功能。 总的来...

    韩顺平 学生管理系统 源代码

    `JScrollPane`组件用于提供滚动条,使内容可以在有限的空间内滚动显示。在代码中,`JTable`被包装在`JScrollPane`中,这样即使表格数据超过窗口大小,也能通过滚动条查看所有数据。 综上所述,这段代码展示了如何...

    Java中Swing的相关知识(2)

    `JPanel`的默认布局管理器是`FlowLayout`,这是一种非常简单的布局策略,它将组件按添加顺序从左到右、从上到下放置。然而,`JPanel`的灵活性允许开发者轻松地更换为其所需的任何布局管理器,如`BorderLayout`、`...

    北大青鸟培训java课件 连载第11章之13

    例如,JFrame是顶级窗口,JPanel则常被用作容器来组织其他组件,而JScrollPane则允许添加滚动条以显示大型内容。 Swing中的组件种类繁多,包括JLabel、JTextField、JTextArea、JButton、JCheckBox、JRadioButton和...

    java课件(完整版)第8章--5

    2. 滚动条面板(JScrollPane):当一个组件的内容超过了可视区域时,JScrollPane可以提供滚动条,使得用户能查看超出视区的部分。它可以包裹任何可滚动的组件,如JTable、JList或JTextArea。 3. 分隔条面板...

    基于Java swing的风景日历课程设计

    如果图片过大,JScrollPane会提供滚动条以便用户查看。图片的选择和设置可能通过JComboBox实现,用户从下拉菜单中选择一个日期,系统将关联的风景图片加载到显示区域。 此外,项目中可能还涉及了文件I/O操作,因为...

    java编程 qq实战 程序

    - **JScrollPane**:滚动条组件,常用于包装JTextArea等可滚动的组件。 - `JScrollPane js1 = new JScrollPane(jt11);` 将JTextArea包裹在JScrollPane内,以便添加滚动条。 ### 2. 窗口布局管理器 #### 关键词:`...

    java swing实现pdf阅读器

    在Java Swing中,我们可以使用`JFrame`作为主窗口,`JPanel`作为内容面板,然后在面板上放置各种组件如`JButton`(按钮)、`JScrollPane`(滚动条)和`JLabel`(显示PDF内容)。对于PDF内容的展示,由于PDFBox不直接...

    抽象窗口工具包 (AWT)和Swing

    它包含了垂直和水平滚动条,通过`setVerticalScrollBarPolicy()`和`setHorizontalScrollBarPolicy()`控制滚动条的显示策略。 【Swing GUI 组件】 Swing提供了多种GUI组件,如JLabel、JTextField、JTextArea、...

    程序设计实用案例选讲袁卫华案例选讲第六次课.ppt

    `JPanel`是中间容器,用于组合轻量级组件,而`JScrollPane`则用于添加滚动条,以便查看大量内容。 **控件组件**是用户界面的基本交互元素,如按钮(`JButton`)、文本框(`JTextField`)等。它们是GUI的最小单位,...

    Swing实例下载.rar

    5. JScrollPane:当组件内容过多无法完全显示时,可以使用它来提供滚动条。 6. JList:展示可选择的列表项,可以进行单选或多选。 7. JTable:用于展示数据的二维表格,支持排序、过滤和编辑。 8. JTree:展示层次...

    Java实现类Windows导航栏

    - 当用户选择一个导航项时,可以改变对应的显示内容,这通常涉及到动态添加或替换`JPanel`中的子组件,或者调整`JSplitPane`的分割线位置。 6. **性能优化**: - `scroll.getVerticalScrollBar()....

    gui swing 控件-源代码

    4. 滚动条组件:JScrollPane内部包含了JScrollBar(垂直或水平滚动条)。 5. 表格组件:JTable(用于显示和编辑表格数据)、DefaultTableModel(表格模型)等。 6. 树形组件:JTree(用于展示树形结构数据)。 7....

    java-中swing结构与布局管理器(ppt文档).ppt

    2. JScrollPane: 提供滚动条功能,用于容纳大组件或可扩展组件。 3. JTabbedPane: 显示多个组件,每次只显示一个,并允许用户方便地在组件间切换。 4. JToolBar: 可以水平或垂直排列一组组件,通常用于放置按钮。 ...

    javaSWING讲解PPT课件.pptx

    `JScrollPane`则用于添加滚动条,以便在内容超出显示范围时能滚动查看。 Swing的GUI组件包括各种用户交互元素,如: - `JTextField`:用于输入单行文本。 - `JComboBox`:下拉列表选择框。 - `JCheckBox`:复选框...

    swing实现Widget

    11. **JScrollPane**: 用于包裹其他组件,当组件的内容超出可视区域时,自动添加滚动条。 创建Swing Widget的基本步骤如下: 1. **导入必要的包**:首先,你需要导入javax.swing.*,这包含了所有Swing相关的类。 2...

    Java课程设计报告++原代码++图片查看器+++图片进行放大_缩小_左旋_右旋_另存_彻底删除

    - **滚动面板**:使用了`JScrollPane`组件来添加滚动条支持,这对于展示较大的图片或当窗口大小不足以完全显示图片时非常有用。 - **提示信息**:通过调用`setToolTipText()`方法为按钮添加了提示文本,当鼠标悬停在...

    Window Builder功能介绍

    - JScrollPane:提供了带有滚动条的面板,当组件超出可视区域时可以滚动查看。 - JSplitPane:用于将容器拆分成多个窗格,用户可以调整各个窗格的大小。 - JTabbedPane:选项卡面板,可以实现多卡片界面的用户交互,...

Global site tag (gtag.js) - Google Analytics