java swing编程问题:一个jframe中添加一个jpanel后,为jpanel添加一个滚动条,当jpanel中内容过多时滑动

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java swing编程问题:一个jframe中添加一个jpanel后,为jpanel添加一个滚动条,当jpanel中内容过多时滑动相关的知识,希望对你有一定的参考价值。

面板jpanel中会添加一些信息(这部分自己做了),现在就想给jpanel加上一个滚动条,使得有多余内容无法显示时向下滑动滚动条即可。查了几个程序不太理想,多谢啦!
注:滚动条在jframe的右边,上下滑动即可~
我在代码里写上这两条了啊,可是滚动条没有显示...是不是除了这两条语句还有其他设置呢?

JScrollPane scrollPane=new JScrollPane(comp);//comp是需要加滑动滚条的组件
比如JTextArea jta=new JTextArea();
然后JScrollPane scrollPane=new JScrollPane(jta);这样当内容多时jta右边就会出现滚动条了
我QQ821722142
参考技术A JTextArea area=new JTextArea();
JScrollPane scrollPane=new JScrollPane(area);
jframe.add(scrollPane);
就可以啦。
参考技术B 把panel放到JScrollPane
如果需要,滚动条会自己显示
希望
可以加我好友,我们共同学习

学习Java随记之swing编程

    最近在学习swing编程,依据老师的教学视频学习使用java.awt.*、javax.swing.*、java.awt.event.*包进行简单的tank大战游戏编程,学习了JFrame、JPanel等容器和组件的使用,学习使用Graphics的各种方法绘制图形,以及一些事件监听和处理方法。

    JFrame这个类在目前的学习中都是继承使用,然后调用三板斧把他显示出来,例如:

public class MyTankGame extends JFrame {//继承JFrame
        ....
    public static void main(String[] args) {
        MyTankGame mtg = new MyTankGame();

    }
        public MyTankGame() {
        //三板斧
        this.setSize(400,300);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭即退出,防内存泄漏
        this.setVisible(true);
    }
}

    坦克是使用Graphics作为画笔画2个长矩形(作为坦克的履带。也可用6个小矩形连接组成的大矩形代替更好看),1个短矩形,1个圆,1条线组合起来,其中矩形使用fill3DRect方法以显示边框,

    for (int i = 0; i < 5; i++) {
    g.fill3DRect(x, y + 6 * i, 5, 6, false);
    g.fill3DRect(x + 15, y + 6 * i, 5, 6, false);
    }
    g.fill3DRect(x + 5, y + 5, 10, 20, false);
    g.fillOval(x + 4, y + 10, 10, 10);
    g.drawLine(x+10, y+1, x+10, y+10);    

然后通过repaint方法刷新坦克实现坦克的移动,其中涉及到事件的监听和事件处理方法,可在画坦克的类JPanel调用KeyListener接口监听JFrame,在JFrame中注册JPanel的监听,这样JPanel就能监听键盘的输入,然后根据需要重写KeyListener的keyPressed、keyReleased等方法,使用(e的类型也是KeyEvent)e.getKeyCode()==KeyEvent.VK_····进行判断进行进一步的处理。

public class MyTankGame extends JFrame {

    MyPanel mp = null;

    public static void main(String[] args) {
        MyTankGame mtg = new MyTankGame();

    }

    public MyTankGame() {
        mp = new MyPanel();
        mp.setBackground(Color.black);//设置背景色
        this.add(mp);
        
        this.addKeyListener(mp);//注册监听
        ·····
    }

}
class MyPanel extends JPanel implements KeyListener {

        ········
        @Override
    public void keyPressed(KeyEvent e) {
        // TODO Auto-generated method stub
        int speed=2;
        //移动坦克并改变方向
        if((e.getKeyCode()==KeyEvent.VK_S)){
            ty+=speed;
            h.setY(ty);
            h.setDirect(-1);
        }else if(·····){
                    ·····
                }
        }
}

至此一个可以自由移动的坦克就出来了。

效果图如下:

技术分享图片

以上是关于java swing编程问题:一个jframe中添加一个jpanel后,为jpanel添加一个滚动条,当jpanel中内容过多时滑动的主要内容,如果未能解决你的问题,请参考以下文章

学习Java随记之swing编程

java swing中怎么实现点击jframe的关闭按钮后,弹出提示框?

java swing问题:JFrame根面板不透明且可见,内容面板不透明且可见,层面板透明且可见,

java形式的未修饰jframe中的Java相对定位swing组件

14.2-全栈Java笔记: Java Swing创建窗口,原来这么简单!!!

java GUI编程(swing)之二swing按钮组件