JAVA两个JScrollPane_JAVA 两个jscrollPanel 平行显示两张图片

本文介绍如何使用JAVA的FlowLayout、GridLayout和GridBagLayout三种布局管理器,分别实现两个JScrollPane平行显示两张图片。通过设置JLabel作为JScrollPane的内容,并调整其尺寸,确保图片在滚动区域内正确显示。
摘要由CSDN通过智能技术生成

展开全部

一共有三个方法实现你e69da5e887aa62616964757a686964616f31333262366435要的效果,分别用三种布局管理器

下面的代码可以直接复制粘贴,类的名字是TestJScrollPane

测试的方法在init()中

图片可以放在JLabel上作为它的背景图片,就可以实现两张图片平行

其中我重写了GBC类,是为了方便使用GridBagLayout的布局管理器

import java.awt.Dimension;

import java.awt.FlowLayout;

import java.awt.GridBagConstraints;

import java.awt.GridBagLayout;

import java.awt.GridLayout;

import java.awt.Insets;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

/**

* 测试三个布局方法,实现你所要的效果

* @author resong27lhk

*

*/

public class TestJScrollPane extends JFrame {

/**

* 构造器

*/

public TestJScrollPane(){

super("测试滚动区域");

init();

}

/**

* 初始化

*/

private void init(){

this.setSize(800, 600);

//页面居中

this.setLocationRelativeTo(null);

//点击关闭,有效关闭整个程序

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//测试FlowLayout布局管理器

// this.add(panelF());

//测试GridLayout布局管理器

// this.add(panelGL());

//测试GridBagLayout布局管理器

this.add(panelGBL());

this.setVisible(true);

}

/**

* 第一个方法:用flowlayout布局管理器

* @return

*/

private JPanel panelF(){

JPanel panel = new JPanel();

FlowLayout fl = new FlowLayout();

panel.setLayout(fl);

//居中显示

fl.setAlignment(FlowLayout.CENTER);

//设置一个固定的大小

Dimension size = new Dimension(300,400);

JLabel labLeft = new JLabel();

JLabel labRight = new JLabel();

//使两个标签的大小都是一个相同的固定大小

labLeft.setPreferredSize(size);

labRight.setPreferredSize(size);

//左右两个JScrollPane

JScrollPane jsLeft = new JScrollPane(labLeft,

JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,

JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

JScrollPane jsRight = new JScrollPane(labRight,

JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,

JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

panel.add(jsLeft);

panel.add(jsRight);

return panel;

}

/**

* 第二个方法:用GridLayout布局管理器

* @return

*/

private JPanel panelGL(){

JPanel panel = new JPanel();

GridLayout gl = new GridLayout(1,2);

panel.setLayout(gl);

//由于格子的大小是根据设置的行和列的数字

//将这个界面平均分(完全平均分)

JLabel labLeft = new JLabel();

JLabel labRight = new JLabel();

//左右两个JScrollPane

JScrollPane jsLeft = new JScrollPane(labLeft,

JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,

JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

JScrollPane jsRight = new JScrollPane(labRight,

JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,

JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

panel.add(jsLeft);

panel.add(jsRight);

return panel;

}

/**

* 第三个方法:用GridBagLayout布局管理器

* @return

*/

private JPanel panelGBL(){

JPanel panel = new JPanel();

GridBagLayout gbl = new GridBagLayout();

panel.setLayout(gbl);

//设置一个固定的大小

Dimension size = new Dimension(300,400);

JLabel labLeft = new JLabel();

JLabel labRight = new JLabel();

//设置标签大小

labLeft.setPreferredSize(size);

labRight.setPreferredSize(size);

//左右两个JScrollPane

JScrollPane jsLeft = new JScrollPane(labLeft,

JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,

JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

JScrollPane jsRight = new JScrollPane(labRight,

JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,

JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

panel.add(jsLeft,new GBC(0,0));

panel.add(jsRight,new GBC(1,0));

return panel;

}

/**

* 测试

* @param args

*/

public static void main(String[] args) {

new TestJScrollPane();

}

}

/**

* 重写了GridBagConstraints,方便操作,是一个工具类

* @author resong27lhk

*

*/

class GBC extends GridBagConstraints{

public GBC(){}

public GBC(int gridx,int gridy){

this.gridx = gridx;

this.gridy = gridy;

}

public GBC(int gridx,int gridy,int gridheight,int gridwidth){

this.gridx = gridx;

this.gridy = gridy;

this.gridheight = gridheight;

this.gridwidth = gridwidth;

}

public GBC setFill(int fill){

this.fill = fill;

return this;

}

public GBC setInsets(Insets insets){

this.insets = insets;

return this;

}

}

本回答由提问者推荐

2Q==

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值