步骤 1 : 先看效果-拉伸居中 步骤 2 : 先看效果-非拉伸居中 步骤 3 : 居中面板CenterPanel
在面板上放一个按钮,这个按钮会自动拉伸居中。 拉伸的程度也可以控制
在面板上放一个按钮,这个按钮会使用默认大小,并且垂直方向和水平方向都居中
增值内容,请先登录
完整的J2SE桌面项目,从无到有完整的开发流程,涵盖全部52个知识点,154个开发步骤, 一共36个讲解视频,累计时长3小时10分59秒,大小1.94G,充实J2SE项目经验,为简历加上一个有吸引力的砝码
增值内容,点击购买
使用爬虫已经被系统记录,请勿使用爬虫,增大封号风险。 如果是误封 ,请联系站长,谢谢
package util;
import java.awt.Component;
import java.awt.Dimension;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class CenterPanel extends JPanel {
private double rate;//拉伸比例
private JComponent c; //显示的组件
private boolean strech; //是否拉伸
public CenterPanel(double rate,boolean strech) {
this.setLayout(null);
this.rate = rate;
this.strech = strech;
}
public CenterPanel(double rate) {
this(rate,true);
}
public void repaint() {
if (null != c) {
Dimension containerSize = this.getSize();
Dimension componentSize= c.getPreferredSize();
if(strech)
c.setSize((int) (containerSize.width * rate), (int) (containerSize.height * rate));
else
c.setSize(componentSize);
c.setLocation(containerSize.width / 2 - c.getSize().width / 2, containerSize.height / 2 - c.getSize().height / 2);
}
super.repaint();
}
public void show(JComponent p) {
this.c = p;
Component[] cs = getComponents();
for (Component c : cs) {
remove(c);
}
add(p);
this.updateUI();
}
public static void main(String[] args) {
JFrame f = new JFrame();
f.setSize(200, 200);
f.setLocationRelativeTo(null);
CenterPanel cp = new CenterPanel(0.85,true);
f.setContentPane(cp);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
JButton b =new JButton("abc");
cp.show(b);
}
}
HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。
问答区域
2021-01-20
请问为什么要在repaint方法中加super.repaint();
1 个答案
how2j 跳转到问题位置 答案时间:2021-01-22 因为 super.repaint里有业务逻辑要执行,仅仅是重写就吧这部分逻辑顶掉了,所以还是需要手动调用一次父类的 repaint才行哦。
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2020-11-03
没有参考代码
回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
2020-10-17
repaint方法是什么时候调用的,我没看到调用啊,这个方法是什么意思?
2020-08-22
setVisible位置放置
2020-08-05
关于cp的初始宽高
提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 40 条以前的提问,请 点击查看
提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
|