Swing编程中为什么对Panel设置了位置后,它的lable位置也跟这变了呢?
总结:
package com.da; //这里我不明白,我对每一个Panle里的按钮设置了位置BorderLayout.SOUTH.可是为什么Lable的位置和它一样同步设置了呢? //做一个界面 //0 嵌入式 //0 通信 // 0 增值业务 //0 传统应用软件 ///JRadionButton //JPanel,JFrame,J import javax.swing.JRadioButton; import java.awt.Container; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JLabel; import java.awt.GridLayout; import java.awt.Color; import java.awt.FlowLayout; import java.awt.BorderLayout; public class yu { public static void main(String[] args) { JFrame j = new JFrame();// 定义一个框架 Container c = j.getContentPane();// 容器类 // 现在需要实现把按及信息排列 c.setLayout(new GridLayout(4, 1));// 网格布局。 JPanel jp1 = new JPanel(new BorderLayout());// 这里在面板类中我并没设置它的布局方式,因为面板不就是一个大容器,只有一个吗? JPanel jp2 = new JPanel(new BorderLayout());// 面板可以有多个吗? JPanel jp3 = new JPanel(new BorderLayout()); JPanel jp4 = new JPanel(new BorderLayout()); // 第二步做JRadioButton。单选按钮组。并设定其位置 JRadioButton jr1, jr2, jr3, jr4; jr1 = new JRadioButton(); jr2 = new JRadioButton(); jr3 = new JRadioButton(); jr4 = new JRadioButton(); // 第一步做Label显示 JLabel jl1, jl2, jl3, jl4; jl1 = new JLabel("通信"); jl2 = new JLabel("嵌入式"); jl3 = new JLabel("增值业务"); jl4 = new JLabel("传统应用软件"); // 创建Panel类肯定不止一个,否则那跟所有label放入同一个容器没区别 // label.setFont(new Font("华文行楷",Font.BOLD,24)); ImageIcon bg = new ImageIcon( "C:/Users/Administrator/Desktop/WuZi/image/21.jpg"); // 将按钮添加到Panel类 jp1.add(jr1, BorderLayout.SOUTH); jp2.add(jr2, BorderLayout.SOUTH); jp3.add(jr3, BorderLayout.SOUTH); jp4.add(jr4, BorderLayout.SOUTH); // 第四步添加Label组件显示提示信息 // 布局管理器除了给按钮定位,还可以给提示标签信息定位吗? jp1.add(jl1); // 注意我们要想在Frame里改变组件的位置,不仅要创建不同的Panel类 jp2.add(jl2); // 还要记得每一个按钮组件都需要设定位置,对于Lable的里提示信息位置可以 jp3.add(jl3); jp4.add(jl4); j.add(jp1);// 将面板添加到窗体 j.add(jp2);// 将面板添加到窗体 j.add(jp3);// 将面板添加到窗体 j.add(jp4);// 将面板添加到窗体 j.setLocationRelativeTo(null); // j.setLayout(new FlowLayout());我快疯掉了,就是这一行,让我查半天,这里意思是顺序布局,当然无法换行显示 j.setSize(333, 333);// FlowLayout()意思是从左到右,我说怎么不能纵向排列,其实网格布局,BordLayout.WSET已经指定了位置,左对齐 j.setBackground(Color.pink); j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); j.setVisible(true); } private static void setBounds(int i, int j, int k, int l) { // TODO Auto-generated method stub } }