急,如何让JPanel随着中用Graphics2D的scale方法自动缩放,同时让滚动条自动变化

freelb 2008-04-22 11:41:58
求救,做了一个打印预览,在一个JPanel里面绘制了表格,让Graphics2D的scale方法自动缩放,同时想让JPanel也自动缩放,绘制内容的JPanel是放在JScrollPane里面的,主要的目的是想让滚动条随着绘制的内容的缩放而自动变化,各位同行,请问怎样实现?帮帮忙
...全文
197 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
huntor 2011-05-15
  • 打赏
  • 举报
回复
先缩放JPanel,在重绘时缩放绘制的图形。
Inhibitory 2011-05-15
  • 打赏
  • 举报
回复
下面只是实现功能代码,自己集成到你的程序中去
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

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

public class Test {
public static void main(String[] args) {
final JFrame frame = new JFrame();

final JPanel panel = new JPanel();
panel.setBackground(Color.GREEN);
panel.setPreferredSize(new Dimension(800,200));
frame.getContentPane().add(new JScrollPane(panel));

JButton zoomOutButton = new JButton("缩小");
JButton zoomInButton = new JButton("放大");
JPanel buttonsPanel = new JPanel();
buttonsPanel.add(zoomOutButton);
buttonsPanel.add(zoomInButton);
frame.getContentPane().add(buttonsPanel, BorderLayout.NORTH);

zoomOutButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int width = panel.getWidth() - 100;
int height = panel.getHeight();

panel.setPreferredSize(new Dimension(width, height));
panel.revalidate(); // 重点是这一句,使得布局生效
}
});


zoomInButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int width = panel.getWidth() + 100;
int height = panel.getHeight();

panel.setPreferredSize(new Dimension(width, height));
panel.revalidate();
}
});

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600, 600);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
gzhcn 2011-05-15
  • 打赏
  • 举报
回复
我也遇到了同样的问题,求高人解答

62,623

社区成员

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

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