JavaAwtSwing笔记之 测试 Label JLabel Button JButton 在 BorderLayout中setPreferredSize()的效果

测试 Label JLabel Button JButton 在 BorderLayout中setPreferredSize()的效果

  • 子部件.setPreferredSize时, 东西width起作用,南北height起作用, center都不起作用
    • 子Component的setPreferredSize(Dimension preferredSize) 在 南北 时 height起作用
    • 子Component的setPreferredSize(Dimension preferredSize) 在 东西 时 width起作用
    • 子Component的setPreferredSize(Dimension preferredSize) 在 中部 时 不起作用
package component;

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.*;

public class 测试SetPreferredSizeBorderLayout中有没有用2205222007 {
	static void pln() {System.out.println("");}
	static void pln(Object o) {System.out.println(o);}
	static void pln(Object o1, Object o2) {pln(o1+"  的结果是  "+o2);}
	
	
	static  Frame frame = new Frame("测试SetPreferredSize在BorderLayout中有没有用2205222007");
	static {
		frame.addWindowListener(new WindowAdapter() {
			@Override public void windowClosing(WindowEvent ev) {
				System.exit(0);
			}
		});
//		frame.setPreferredSize(new Dimension(1600,800));  //无用
		frame.setBounds(100,100,1600,800);
	}
	public  static  void main(String...arguments) throws Exception{
		
		Label label = new Label("Label  setPreferredSize(new Dimension(600, 0)", Label.CENTER); frame.add(label, BorderLayout.EAST);
		label.setBackground(Color.blue);
		label.setPreferredSize(new Dimension(600, 0));
//		label.setSize(800,200);  //无效
		
		JLabel jlb010 = new JLabel("JLabel  setPreferredSize(new Dimension(300,10))", JLabel.CENTER); frame.add(jlb010, BorderLayout.WEST);
		jlb010.setBackground(Color.YELLOW);
		jlb010.setPreferredSize(new Dimension(300,10));
		jlb010.setOpaque(true);
		
		Button button = new Button("Button  setPreferredSize(new Dimension(9999,200)"); frame.add(button, "North"); button.setPreferredSize(new Dimension(9999,200));
		
		JButton jButton = new JButton("JButton  setPreferredSize(new Dimension(9999,100)"); frame.add(jButton, "South"); jButton.setPreferredSize(new Dimension(9999,100));
		
		JButton jButton2 = new JButton("JButton  setPreferredSize(new Dimension(1,1)"); frame.add(jButton2, "Center"); jButton2.setPreferredSize(new Dimension(1,1));
		
		frame.setVisible(true);
		
		好酒在张工("java.awt.Label");
		好酒在张工("java.awt.Button");
		好酒在张工("javax.swing.JLabel");
		好酒在张工("javax.swing.JButton");
	}
	
	
	public static void 好酒在张工(String className) throws Exception{
		Frame frame = (Frame)Class.forName("java.awt.Frame").getDeclaredConstructor(String.class).newInstance("测试SetPreferredSize在BorderLayout中有没有用2205222007");
		frame.addWindowListener(new WindowAdapter() {
			@Override public void windowClosing(WindowEvent ev) {
				System.exit(0);
			}
		});
//		frame.setPreferredSize(new Dimension(1600,800));  //无用
		frame.setBounds(100,100,1600,800);
		
		String dxnbz[] = new String[] {"East" , "West" , "South" , "North" , "Center"};
		for(int i=0; i<dxnbz.length; i++) {
			Component component = (Component) Class.forName(className).getDeclaredConstructor(String.class).newInstance(dxnbz[i]);
			switch (dxnbz[i]) {
			case"East": component.setBackground(Color.RED); break;
			case"West": component.setBackground(Color.ORANGE); break;
			case"South": component.setBackground(Color.YELLOW); break;
			case"North": component.setBackground(Color.GREEN); break;
			case"Center": component.setBackground(Color.CYAN); break;
			}
			component.setPreferredSize(new Dimension(300,200));
			pln("查看默认的isOpaque() ,Component的false表示为轻量级组件, JComponent的true为不透明,看得到background,  component.getClass()="+component.getClass()+"    component.isOpaque()==", component.isOpaque());
			if(component.getClass()==JLabel.class) {
				JLabel jlb = (JLabel)component;
				jlb.setOpaque(true); // JLabel默认的opaque是false, 看不到background;
				pln("jlb.setOpaque(true);后, jlb.isOpaque()=", jlb.isOpaque());
			}
			frame.add(component, dxnbz[i]);
		}
		frame.setVisible(true);
	}

}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
都是东西width起作用,南北height起作用, center都不起作用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kfepiza

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值