当前位置:  技术问答>java相关

关于JPanel滚动的问题

    来源: 互联网  发布时间:2015-08-10

    本文导语:  一个JPanel,Layout为null, 其中画了一个JLabel,当移动出panel边界时,希望出现滚动条. 如下程序,初始有滚动条,但当物件出界后,滚动条没有增加滚动范围. 问:如何在panel的范围扩大后,随之改变滚动条的范围?import java.awt.*; imp...

一个JPanel,Layout为null,
其中画了一个JLabel,当移动出panel边界时,希望出现滚动条.
如下程序,初始有滚动条,但当物件出界后,滚动条没有增加滚动范围.
问:如何在panel的范围扩大后,随之改变滚动条的范围?import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;

public class Test extends Frame {
    
    public JLabel bl = new JLabel(" b1 ");
JPanel editor;
Point lastLocation;

    public Test() {

        setLayout(new BorderLayout());
        editor = new JPanel();
     editor.setLayout(null);
editor.setPreferredSize(new Dimension(300,400));
JScrollPane scroller = new JScrollPane();
     JViewport port = scroller.getViewport();
    port.add(editor);
        port.setScrollMode(1);
    
add("Center", scroller);

        bl.addMouseMotionListener(new MouseMotionAdapter() {
            public void mouseDragged(MouseEvent e) {
              if( lastLocation == null )
                 return; 
            JLabel ls = (JLabel) e.getComponent();
              int incx = lastLocation.x - e.getX(),
                  incy = lastLocation.y - e.getY();

              ls.setLocation(ls.getX()-incx,ls.getY()-incy);
            }
        });
        bl.addMouseListener(new MouseAdapter() {
            public void mousePressed(MouseEvent e ) {
              lastLocation = e.getPoint();
            }
            public void mouseReleased(MouseEvent e ) {
              lastLocation = null;
            }
            public void mouseClicked(MouseEvent e ) {
          System.out.println("c");
  JLabel ls = (JLabel) e.getComponent();
  ls.setForeground(Color.blue);

            }
        });
         
        bl.setBounds(new Rectangle(100, 39, 55, 22));
bl.setBorder(new LineBorder(Color.BLUE, 1));
        editor.add(bl);
    }

public static void main(String[] args) {
        Test frame = new Test();
        frame.addWindowListener(
            new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            });
        frame.setSize(300, 400);
        frame.setVisible(true);
    }
    
}

|
滚动条是根据JPanel的初始大小来确定出现与否。你要做的事是动态改变JPanel的大小。

|
用setPreferedSize()设置JPanel大小,不要用setSize()

|
建议你最好不要吧awt和swing的组件一起来用,这样有一些问题你想也想不到的。还有你的代码写的怎么这么难看呀,一句话的事写了这么多:JScrollPane scroller = new JScrollPane();
JViewport port = scroller.getViewport();
port.add(editor);
port.setScrollMode(1);
完全可以用
JScrollPane  scroller = new JScrollPane(editor);
一句替换吗

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间javax.swing类jpanel的类成员方法: jpanel定义及介绍
  • 如何使JPanel中的一个继承JPanel的组件的尺寸发生动态改变???
  • java命名空间javax.swing类jpanel.accessiblejpanel的类成员方法: jpanel.accessiblejpanel定义及介绍
  • 我要在JPanel上画一个字符串String,有没有让它倒立(竖着显示在JPanel上)的函数(类似drawSting()的)
  • java命名空间javax.swing类jpanel的类成员方法: getaccessiblecontext定义及介绍
  • JPanel中如何动态生成组件?
  • java命名空间javax.swing类jpanel的类成员方法: paramstring定义及介绍
  • 我是JAVA新手,所以我不明白(JPanel)类的东西
  • java命名空间javax.swing类jpanel的类成员方法: getui定义及介绍
  • 为什么JBuilder 7中的JPanel的layout属性出不来
  • java命名空间javax.swing类jpanel的类成员方法: setui定义及介绍
  • JPanel中如何捕获键盘事件?
  • java命名空间javax.swing类jpanel的类成员方法: getuiclassid定义及介绍
  • 怎么可以得到一个JPanel下的所有JTextField的所有变量名。
  • 再开一贴,JPanel如何收到键盘事件
  • 请问怎么获得一个JPanel的更改大小完毕的消息
  • JPanel如何加标题?
  • 如何通过菜单切换同一对象下jpanel。有何方法,如果有代码示范,就更好了
  • 我在JPanel上画了一个图,我怎么才能实现缩放功能即,我用放大,缩小的Button控制)???? 在线等待...
  • 请问JPanel不支持滚动条吗?
  • 在JScrollPane中加入带图象的JPanel,为什么JScrollPane不能滑动?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3