JavaAwtSwingComponent用setLocation()setSize()setBounds()调位置尺寸时,要用 父组件.setLayout(null); 移除layout

JavaAwtSwingComponent用setLocation()setSize()setBounds()调位置尺寸时,要用 父组件.setLayout(null);移除layout

父组件.setLayout(null)frame.setLayout(null)

package component;

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

import javax.swing.JLabel;

public class SetSizeLocationBounds要将layout设为null {
	
	public static void main(String...arguments)throws Exception{
		
		Frame frame = new Frame(Thread.currentThread().getStackTrace()[1].getClassName());
		
		frame.addWindowListener(new WindowAdapter() {
			@Override
			public void windowClosing(WindowEvent windowEvent) {
				System.exit(0);
			}
		});
		
		frame.setBounds(100, 100, 1024, 768);
		
		//父组件移除layout后, 子件setLocation()setSize()setBounds()才有效
		frame.setLayout(null); 
		
		JLabel jlb010 = new JLabel("JLabel010,<br>JLabel的文字默认是垂直居中水平靠左的"); frame.add(jlb010);
		//JLabel默认是透明的, 要setOpaque(true)设为不透明, setBackground的背景色才看得见
		jlb010.setOpaque(true);	jlb010.setBackground(Color.GRAY); jlb010.setForeground(Color.CYAN);
		jlb010.setLocation(300, 555);
		jlb010.setSize(400, 100);
		
		Label lb010 = new Label("Label010 Label中文显示是否正常"); frame.add(lb010);
		lb010.setBackground(new Color(66,55,44,200));
		lb010.setLocation(800,555);
		lb010.setSize(100, 100);
		
		
		JLabel jlb020 = new JLabel("<html><body style='background:blue;padding:10px;'>"
				+ "<div>jlb020</div>"
				+ "</body></html>"); 
		frame.add(jlb020);
		jlb020.setLocation(10,555);		jlb020.setSize(200,100);
//		jlb020.setBounds(20, 500, 200, 100);
		//JLabel默认是透明的, 要setOpaque(true)设为不透明, setBackground的背景色才看得见
		jlb020.setOpaque(true); jlb020.setBackground(Color.cyan);
		
		
		
		JLabel jlb030 = new JLabel("<html><body style='background:yellow;color:red;'>"
				+ "<div style='font-size:20px; text-align:center; color:black;'>jlb030</div>"
				+ "<div>JLabel默认是透明的, 要setOpaque(true)设为不透明, setBackground的背景色才看得见</div>"
				+ "可看到JLabel的html设置的background在JLabel本身的background上,未必会覆盖整个JLabel"
				+ "</body></html>"); 
		frame.add(jlb030);
		jlb030.setBounds(10, 5, 800, 100);
		//JLabel默认是透明的, 要setOpaque(true)设为不透明, setBackground的背景色才看得见
		jlb030.setOpaque(true); jlb030.setBackground(Color.cyan); 
		//
		jlb030.setForeground(Color.DARK_GRAY);
		
		
		
		JLabel jlb040 = new JLabel("<html><body style='background:green;color:red;'>"
				+ "<div style='font-size:20px; text-align:center; color:black;'>jlb040</div>"
				+ "<div>JLabel默认是透明的, 要setOpaque(true)设为不透明, setBackground的背景色才看得见</div>"
				+ "<div>JLabel可以在new时指定水平对齐方式, 垂直对齐方式要之后使用方法, <br>JLabel的文字默认是垂直居中水平靠左的</div>"
				+ "</body></html>"
				, JLabel.CENTER); 
		frame.add(jlb040);
		jlb040.setBounds(10, 150, 800, 150);
		//JLabel默认是透明的, 要setOpaque(true)设为不透明, setBackground的背景色才看得见
		jlb040.setOpaque(true); jlb040.setBackground(Color.cyan); 
		//
		jlb040.setForeground(Color.DARK_GRAY);
//		jlb040.setHorizontalAlignment(JLabel.CENTER);
//		jlb040.setVerticalAlignment(JLabel.BOTTOM);
		
		
		
		JLabel jlb050 = new JLabel("<html><body style='background:blue;color:red;'>"
				+ """
						<ul>
							<li>JLabel可通过setHorizontalAlignment(JLabel.RIGHT);设置水平对齐方式</li>
							<li>JLabel可通过etVerticalAlignment(JLabel.BOTTOM);设置垂直对齐方式</li>
						</ul>
						"""
				+ "</body></html>"
				); 
		frame.add(jlb050);
		jlb050.setBounds(0, 350, 800, 150);
		//JLabel默认是透明的, 要setOpaque(true)设为不透明, setBackground的背景色才看得见
		jlb050.setOpaque(true); jlb050.setBackground(Color.cyan); 
		//
		jlb050.setForeground(Color.DARK_GRAY);
		jlb050.setHorizontalAlignment(JLabel.RIGHT);
		jlb050.setVerticalAlignment(JLabel.BOTTOM);
		
		frame.setVisible(true);
	}

}

在这里插入图片描述

javaAwtSwing的一些布局layout

所属类包布局管理器名称说明
Java.awtFlowLayout(流式布局)组件按照加入的先后顺序按照设置的对齐方式从左向右排列,一行排满到下一行开始继续排列
Java.awtBorderLayout(边界布局)容器划分为东、西、南、北、中五个区域,每个区域只能放置一个组件。
Java.awtGridLayout(网格布局容器的空间划分成M×N列的网格区域, 每个区域只能放置一个组件。
Java.awtCardLayout(卡片布局)如同一叠牌,每个牌对应一个组件,但每次只能显示其中的一张牌。适用于在一个空间中防止多个组件的情况
Java.awtGridBagLayout(网格包布局)GridLayout的升级版,组件仍然是按照行、列放置,但是每个组件可以占据多个网格
Java.swingBoxLayout(箱式布局)允许在容器中纵向或者横向放置多个控件
Java.swingSprigLayout(弹簧布局)根据一组约束条件放置控件
空布局不使用布局管理器,按照控件自身提供的大小、位置信息放置控件
import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JButton; import javax.swing.JTextField; import javax.swing.JLabel; import java.awt.*; import javax.swing.JFileChooser; public class demo extends JFrame{ public static void main(String[] args) { JFrame frame=new JFrame();//创建一个窗口 frame.setTitle("开始你的复制吧!");//设置窗口标题 frame.setBounds(400,400,400,300);//设置窗口的位置和大小 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置窗口关闭的操作 frame.setBackground(Color.CYAN);//设置Frame的背景色 frame.setLayout(null);//不适用布局管理器,设置为NULL JTextField textField1=new JTextField(30); JTextField textField2=new JTextField(30); JLabel label1=new JLabel("输入你要拷贝的文件:"); JLabel label2=new JLabel("输入拷到哪里去:"); textField1.setColumns(30); textField2.setColumns(30); label1.setBounds(10,10,120,20); label2.setBounds(10,40,120,20); textField1.setBounds(140,10,200,20); textField2.setBounds(140,40,200,20); frame.add(label1); frame.add(textField1); frame.add(label2); frame.add(textField2); //frame.setSize(400,100); //frame.setLocation(300,200); frame.setVisible(true); JButton button1 =new JButton("copy"); button1.setBounds(270,70,100,20); button1.setBackground(Color.CYAN);//做作的天蓝色 frame.add(button1); JButton button2=new JButton("..."); button2.setBounds(350,12,20,16); frame.add(button2); JButton button3=new JButton("..."); button3.setBounds(350,42,20,16); frame.add(button3); JFileChooser fileChooser=new JFileChooser("d://"); fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);//可以选择文件和文件夹 fileChooser.showOpenDialog(null);//文件打开对话框 } }怎么把文件选择器和button2联系起来,达到点击button2就会弹出文件选择器的效果
05-27
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

kfepiza

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

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

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

打赏作者

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

抵扣说明:

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

余额充值