微型技术报告(2)

组件在容器中位置的确定


容器坐标系方式确定组件位置

  • 容器界面上的坐标系是一个二维网格,它可以标识容器界面上每个点的坐标位置。坐标单位用像素来度量,一个像素是一台显示器的最小分辨单位。坐标系由一个 x 坐标(水平坐标)和一个 y 坐标(垂直坐标)组成。在默认状态下原点(0,0)为容器界面左上角坐标,因此,x 坐标是从左向右移动的水平距离,y 坐标是从上向下移动的垂直距离。
  • 容器默认采用布局管理器进行组件布局,如选用坐标方式布局组件,首先需要调用容器方法“setLayout(null)”进行设置。之后对要布局的组件,调用其祖先类 Component 的 setLocation 或 setBounds 方法来确定在容器中的位置。当容器整体移动或调整尺寸时,嵌入容器的组件在容器中的相对位置和尺寸并不改变。

布局管理器方式确定组件位置

  • FlowLayout

    FlowLayout 是 Panel、Applet 容器的默认布局管理器,其对组件布局的规律是从上到下、从左到右。如果容器足够宽,第一个组件先添加到容器第一行的最左边,后续的组件依次添加到上一个组件的右边。如果当前行已放置不下组件,则放置到下一行的最左边。当容器尺寸改变时,组件的尺寸不会变动。

import java.awt.*;
public class FlowLayoutDemo {

    public static void main(String[] args) {
        Frame f = new Frame("FlowLayout Sample");
        f.setLayout(new FlowLayout());
        f.add(new Button("one"));
        f.add(new Button("two"));
        f.add(new Button("three"));
        f.add(new Button("four"));
        f.setSize(400,200);
        f.setVisible(true);
    }

}

这里写图片描述

  • BorderLayout

    BorderLayout 是 Window、Frame 和 Dialog 的默认布局管理器。BorderLayout 布局管理器把容器分成五个区域:North、South、East、West 和 Center,每个区域只能放置一个组件。在使用 BorderLayout 的时候,如果容器的尺寸发生变化,组件的变化规律为:组件相对位置不变,大小发生变化。

import java.awt.*;
public class BoderLayoutDemo {

    public static void main(String[] args) {
        Frame f = new Frame("BorderLayout Sample");
        f.setLayout(new BorderLayout());
        Button north = new Button("North");
        Button south = new Button("South");
        Button west = new Button("West");
        Button east = new Button("East");
        Button center = new Button("Center");
        f.add(north,BorderLayout.NORTH);
        f.add(south,BorderLayout.SOUTH);
        f.add(west,BorderLayout.WEST);
        f.add(east,BorderLayout.EAST);
        f.add(center,BorderLayout.CENTER);
        f.setSize(400,400);
        f.setVisible(true);
    }

}

这里写图片描述

  • GirdLayout

    GirdLayout 使容器中各个组件呈网格状布局,平均占据容器的空间。GirdLayout 的特点是:将容器界面分成若干行和列,每个格大小一致,再调用容器方法 add 加入组件,按从左到右、从上到下顺序进行组件布局。因而当容器尺寸改变时,组件尺寸也相应调整。

import java.awt.*;
public class GridLayoutDemo {

    public static void main(String[] args) {
        Frame f = new Frame("GridLayout Sample");
        f.setSize(300,200);
        f.setLayout(new GridLayout(2,3));    //布局有两行三列
        f.add(new Button("1"));
        f.add(new Button("2"));
        f.add(new Button("3"));
        f.add(new Button("4"));
        f.add(new Button("5"));
        f.add(new Button("6"));
        f.setVisible(true);
    }

}

这里写图片描述

  • CardLayout

    CardLayout 布局管理器能够处理两个以上组件共享同一显示空间的情况。它把容器分成许多层,每层的显示空间占据整个容器的大小,但是每层只允许放置一个组件,如果要放置多个组件,则先加入一个 Panel 对象,再将 Panel 对象加入层中。CardLayout 就像一副叠得整整齐齐的扑克牌,但一次只能看见最上面的一张牌,每一张牌就相当于布局管理器中的一层。

import java.awt.*;
public class CardLayoutDemo {

    public static void main(String[] args) {
        Frame f = new Frame("CardLayout Sample");
        CardLayout card = new CardLayout();
        f.setLayout(card);
        f.setSize(400,300);
        f.add(new Button("Button1"),"c1");    //用字符串c1作为本层的索引标识
        f.add(new Button("Button2"),"c2");    //用字符串c2作为本层的索引标识
        f.add(new Button("Button3"),"c3");    //用字符串c3作为本层的索引标识
        card.show(f,"c3");
        f.setVisible(true);
    }

}

这里写图片描述

  • GirdBagLayout

    GirdBagLayout 一改其他的外观管理器的死板模样,具有很多的灵活性。GirdBagLayout 通过类 GirdBagConstraints 的帮助,按照设计的意图,改变组件的大小,把它们摆在设计者希望摆放的位置上。在 GirdBagLayout 中,每个组件都有一个 GirdBagConstraints 对象来给出它的大小和摆放的位置。在使用 GirdBagLayout 的时候,最重要的就是学会类 GirdBagConstraints 的使用方法,学会如何设置组件的大小、位置等限制条件。

import java.awt.*;
public class GridBagLayoutDemo {

    public static void main(String[] args) {
        Frame f = new Frame("GridBagLayout Sample");
        f.setSize(320, 180);    //设置窗口的大小
        GridBagConstraints gbc = new GridBagConstraints();    //使用类GridBagConstraints
        f.setLayout(new GridBagLayout());    //设定外观管理器位GridBagLayout外观管理器
        gbc.fill = GridBagConstraints.BOTH;    //所有的按钮都会把分配的剩余空间填满
        gbc.gridheight = 1;    //设置第一个按钮显示属性
        gbc.gridwidth = 1;
        Button button1 = new Button("东");
        ((GridBagLayout)f.getLayout()).setConstraints(button1, gbc);
        f.add(button1);
        gbc.gridwidth = GridBagConstraints.REMAINDER;    //设置第二个按钮的gridwidth,gridheigth保持不变
        Button button2 = new Button("西");
        ((GridBagLayout)f.getLayout()).setConstraints(button2, gbc);
        f.add(button2);
        gbc.gridheight = 4;    //设置第三个按钮显示属性
        gbc.gridwidth = 1;
        Button button3 = new Button("南");
        ((GridBagLayout)f.getLayout()).setConstraints(button3, gbc);
        f.add(button3);
        gbc.gridheight = 2;    //设置第四个按钮显示属性
        gbc.gridwidth = 1;
        Button button4 = new Button("北");
        ((GridBagLayout)f.getLayout()).setConstraints(button4, gbc);
        f.add(button4);
        gbc.gridwidth = GridBagConstraints.REMAINDER;    //设置第五个按钮显示属性
        Button button5 = new Button("中");
        ((GridBagLayout)f.getLayout()).setConstraints(button5, gbc);
        f.add(button5);
        gbc.insets = new Insets(5, 6, 7, 8);    //设置第六个按钮显示属性
        Button button6 = new Button("GridBagLayoutDemo");
        ((GridBagLayout)f.getLayout()).setConstraints(button6, gbc);
        f.add(button6);
        f.setVisible(true);
    }

}

这里写图片描述

深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值