如何在JScrollPane放置JPanel

Yujia0701 2008-03-19 12:07:32
在未加JScrollPane前 带图片的JPanel能显示
为什么把它加在JScrollPane中就不能显示了 谢谢
JScrollPane如何使用
注:用到的图片为 "C:/Pig.JPG"的大约130*130图片


代码1
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;

import javax.swing.*;
import javax.swing.event.*;
import javax.swing.filechooser.FileFilter;
import java.io.*;
import javax.imageio.*;

public class Test extends JFrame
{
public JPanel panel;
public JScrollPane p;

public static void main(String args[])
{
Test demo = new Test();
demo.setTitle("Test ");
demo.setVisible(true);
}

public Test()
{
this.setSize(1000,500);
Container contentPane = getContentPane();

panel = new JPanel();

ImageBox box = new ImageBox("C:/Pig.JPG");
box.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent e) {
System.out.println("mousePressed1()");
}
});

panel.add(box);

contentPane.add(panel);
}
}
代码2
class ImageBox extends JLabel
{
private Image img;
public int imageWidth;
public int imageHeight;

public ImageBox(String name)
{
super(new ImageIcon(name));
}
}


import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;

import javax.swing.*;
import javax.swing.event.*;
import javax.swing.filechooser.FileFilter;
import java.io.*;
import javax.imageio.*;

public class Test extends JFrame
{
public JPanel panel;
public JScrollPane p;

public static void main(String args[])
{
Test demo = new Test();
demo.setTitle("Test ");
demo.setVisible(true);
}

public Test()
{
this.setSize(1000,500);
Container contentPane = getContentPane();
p = new JScrollPane();
p.setBounds(300,300,300,300);
contentPane.add(p);

panel = new JPanel();

ImageBox box = new ImageBox("C:/Pig.JPG");
box.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent e) {
System.out.println("mousePressed1()");
}
});

panel.add(box);

p.add(panel);
}
}

class ImageBox extends JLabel
{
private Image img;
public int imageWidth;
public int imageHeight;

public ImageBox(String name)
{
super(new ImageIcon(name));
}
}
...全文
580 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
math_man 2008-03-26
  • 打赏
  • 举报
回复
p.getViewport().add(tab) 也应该可以
kalman03 2008-03-26
  • 打赏
  • 举报
回复
up
numb1126 2008-03-24
  • 打赏
  • 举报
回复
楼上解释的好清楚。JScrollPane是不能像JPanel一样直接add进去就显示出来的,必须在构造他(new)的时候,把要显示的控件对象作为参数传给他,才会正常显示。例如有个表格tab,要放进去就要JScrollPane p=new JScrollPane(tab);要后期加进去的话就用p.getViewport().setView(tab); 来取代add
需要正能量 2008-03-22
  • 打赏
  • 举报
回复
你是要使用JScrollPane实现自动滚动吗?
JScrollPane jp = new JScrollPane();
jp.setVerticalScrollBarPolicy(JScrollPane.verticalScrollBarPolicy);
jp.setHorizontalScrollBarPolicy(JScrollPane.horizontalScrollBarPolicy);
JPanel panel = new JPanel();
jp.getViewport().add(panel);
注意如果需要滚动的时候,
设置一下panel的大小 panel.setPreferredSize(new Dimension(width,height));
Inhibitory 2008-03-19
  • 打赏
  • 举报
回复
public Test()
{
this.setSize(1000,500);
Container contentPane = getContentPane();
p = new JScrollPane();
p.setBounds(300,300,300,300);
contentPane.add(p); // 新建了一个JScrollPane, 但是并没有把JPanel加入到JScrollPane中.

panel = new JPanel();

ImageBox box = new ImageBox("C:/Pig.JPG");
box.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent e) {
System.out.println("mousePressed1()");
}
});

可以改为如下试试:

public Test()
{
this.setSize(1000,500);
Container contentPane = getContentPane();
panel = new JPanel();
p = new JScrollPane(panel); // 在创建JScrollPane的时候把panel作为他的构造函数的参数,
// 这样, panel就会被加到JScrollPane中.
p.setBounds(300,300,300,300);
contentPane.add(p);



ImageBox box = new ImageBox("C:/Pig.JPG");
box.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent e) {
System.out.println("mousePressed1()");
}
});

另一种方法:
public Test()
{
this.setSize(1000,500);
Container contentPane = getContentPane();
p = new JScrollPane();
p.setBounds(300,300,300,300);
contentPane.add(p);

panel = new JPanel();
p.getViewport().setView(panel); // 先创建JScrollPane, 然后动态的向JScrollPane中加入组件.

ImageBox box = new ImageBox("C:/Pig.JPG");
box.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent e) {
System.out.println("mousePressed1()");
}
});

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧