当前位置: 首页 > news >正文

Java_Swing程序设计

swing组件允许编程人员在跨平台时指定统一的外观和风格。

Swing组件通常被称为轻量级组件,

JFrame在程序中的语法格式:

JFrame jf=new JFrame(title);

Container container=jf.getContentPane();

jf:JFrame类的对象 container:Container类的对象。

JFrame类的常用构造方法包括以下两种形式:

 public JFrame()  创建一个初始不可见、没有标题的新窗体

public JFrame(String title) 在实例化该Frame对象时可以创建一个不可见但具有标题的窗体。

setVisible(true) 方法使窗体可见

setDefaultCloseOperation()方法关闭窗体。

DO_NOTHING_ON_CLOSE 什么都不做就将窗体关闭

DISPOSE_ON_CLOSE 代表任何注册监听程序对象后会自动隐藏并释放窗体

HIDE_ON_CLOSE 隐藏窗口的默认关闭

EXIT_ON_CLOSE 退出应用程序默认窗口关闭

JDialog窗体

JDialog窗体是Swing组件中的对话框,它继承了AWT组件中的Java.awt.Dialog类。

其功能是从一个窗体中弹出另一个窗体,在使用时也使用调用getContentPane()方法将窗体转换为容器,然后在容器中设置窗体的特性。

public JDialog() 创建一个没有标题和父窗体的对话框。

public JDialog(Frame f) : 创建一个指定父窗体的对话框,但该窗体没有标题。

public JDialog(Frame f, boolean model): 创建一个指定类型的对话框,并指定父窗体,但该窗体没有指定标题。

public JDialog(Frame f,boolean model): 创建一个指定类型的对话框,并指定父窗体,但该窗体没有指定标题。

public JDialog(Frame f,String title,boolean model):创建一个指定标题、窗体和模式的对话框。

JFrame类中的两种构造方法分别为无参的构造方法和有参的构造方法。

第一种形式的构造方法可以创建一个初始不可见、没有标题的新窗体,第二种形式的构造方法在实例化该JFrame对象时可以创建一个不可见但具有标题的窗体。

package Procedures;import javax.swing.*;
import java.awt.*;public class Example1 extends JFrame{public void CreateJFrame(String title){JFrame jf=new JFrame(title); //实例化一个JFrame对象Container container= jf.getContentPane(); //获取一个容器JLabel jl=new JLabel("这是一个JFrame窗体"); //创建一个JLable标签jl.setHorizontalAlignment(SwingConstants.CENTER); //使标签上的文字居中container.add(jl); //将标签添加到容器中container.setBackground(Color.white); //设置容器的背景颜色jf.setVisible(true); //使窗体可视jf.setSize(200,150); //设置窗体大小jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //设置窗体关闭方式}public static void main(String args[]){ //在主方法中调用CreateJFrame()方法new Example1().CreateJFrame("创建一个JFrame窗体");}}

setSize(int x,int y)方法设置窗体大小,其中x,y代表窗体的宽与高。

创建窗体后,给予窗体一个关闭方式,可以调用setDefaultCloseOperation()方法。Java常用窗体关闭方法有以下4种。

DO_NOTHING_ON_CLOSE  代表什么都不做就将窗体关闭

DISPOSE_ON_CLOSE  任何注册监听程序对象后会自动隐藏并释放窗体

HIDE_ON_CLOSE  EXIT_ON_CLOSE 隐藏窗口的默认窗口关闭

EXIT_ON_CLOSE 退出应用程序默认窗口关闭

JDialog窗体

JDialog窗体是Swing组件中的对话框,他继承了AWT组件中的java.awt.Dialog类

JDialog窗体的功能是从一个窗体中弹出另一个窗体,它与JFrame窗体类似,在使用时也需要调用getContentPane()方法将窗体转换为容器,然后在容器中设置窗体的特性。

public JDialog(): 创建一个没有标题和父窗体的对话框。

public JDialog(Frame f):创建一个指定父窗体的对话框,但该窗体没有标题。

public JDialog(Frame f,boolean model):创建一个指定类型的对话框,并指定父窗体,但该窗体没有指定标题。

public JDialog(Frame f,String title):创建一个指定标题和父窗体的对话框。

public JDialog(Frame f,String title,boolean model):创建一个指定标题、窗体和模式的对话框)

标签组件与图标

在Swing中显示文本或提示信息的方法是使用标签,它支持文本字符串和图标。在应用程序的用户界面中,一个简短的文本标签可以使用户知道这些组件的目的,所以标签在Swing中是比较常用的组件。

标签的使用

标签由JLable类定义,它的父类为JComponent类。

标签可以显示一行只读文本、一个图像或带图像的文本,它并不能产生任何类型的事件,只是简单的显示文本和图片,但是可以使用标签的特性指定标签上文本的对其方式。

JLabel类提供了多种构造方法,可以创建多种标签,如显示只有文本的标签、只有图标的标签或包含文本与图标的标签。JLabel类常用的几个构造方法如下。

public JLabel(): 创建一个不带图标和文本的JLabel对象。

public JLabel(Icon icon): 创建一个带图标的JLabel对象。

public JLabel(Icon icon,int aligment): 创建一个带图标的JLabel对象,并设置图标水平对齐方式。

public JLabel(String text,int aligment): 创建一个带文本的JLabel对象,并设置文字水平对齐方式。

public JLabel(String text,Icon icon,int aligment): 创建一个带文本、带图标的JLabel对象,并设置标签内容的水平对齐方式。

图标的使用

Swing中的图标可以放置在按钮、标签等组件上,用于描述组件的用途。图标可以用Java支持的图片文件类型进行创建,也可以使用java.awt.Graphics类提供的功能方法来创建。

创建图表

在Swing中通过Icon接口来创建图标,可以在创建时给定图标的大小、颜色等特性。如果使用Icon接口,必须实现Icon接口中的3个方法:

public int  getIconHeight()

public int getIconWidth()

public void paintIcon(Component arg0,Graphics arg1,int arg2,int arg3)

getIconHeigth()与getIconWidth()方法用于获取图标的长与宽,paintIcon()方法用于实现在指定坐标位置画图。

public ImageIcon(): 该构造方法构建一个通用的ImageIcon对象,当真正需要设置图片时再使用ImageIcon对象调用setImage(Image image)方法;来操作。

public ImageIcon(Image image,String description): 除了可以从图片源创建图标之外,还可以为这个图标添加简短的描述,但这个描述不会在图标上显示,可以使用getDescripion()这个方法获取这个描述。

public ImageIcon(URL url):该构造方法利用位于计算机网络上的图像创建图标

常用布局管理器:

布局管理器提供了Swing组件安排、展示在容器中的方法及基本的布局功能。

Swing提供的常用布局管理器包括流布局管理器、边界布局管理器和网格布局管理器。

绝对布局:

在Swing中,除了使用布局管理器外还可以使用绝对布局。绝对布局,就是硬性指定组件在容器中的位置和大小,可以使用绝对坐标的方式来指定组件的位置。

使用绝对布局的步骤如下:

1.使用Container.setLayout(null)方法取消布局管理器。

2.使用Component.setBounds()方法设置每一个组件的大小与位置。

流布局管理器

流布局管理器是最基本的布局管理器,在整个容器中的布局正如其名,像流水一样从左到右摆放组件,直到占据这一行的所有空间。然后再向下移动一行,组件默认居中排列。

FlowLayout类中具有以下常用的构造方法:

public FlowLayout()

public FlowLayout(int alignment)

public FlowLayout(int aligment,int horizGap,int vertGrap)

alignment参数表示流布局管理器后组件在每一行的具体摆放位置。

FlowLayout.LEFT=0   行组件左对齐排列

FlowLayout.CENTER=1; 

FlowLayout.RIGHT=2; 行组件被指定为右对齐排列

horizFGap与vertGap两个参数分别以像素为单位指定组件之间的水平间隔与垂直间隔。

边界布局管理器

在默认不指定窗体布局的情况下,Swing组件的布局模式是边界布局管理器。

边界布局管理器的功能不止如此,边界布局管理器还可以将容器划分为东、南、西、北、中5个区域,可以将组件加入到者5个区域中。


import java.awt.BorderLayout;
import java.awt.Container;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.WindowConstants;public class BorderLayoutPosition extends JFrame {//定义组件摆放位置的数组String[] border= {BorderLayout.CENTER,BorderLayout.NORTH,BorderLayout.SOUTH,BorderLayout.WEST,BorderLayout.EAST};String[] buttonName= {"center button","north button","south button","west button","east button"};public BorderLayoutPosition() {setTitle("这个窗体使用边界布局管理器");Container c=getContentPane(); //定义一个容器setLayout(new BorderLayout()); //设置容器为容器为边界布局管理器for(int i=0;i<border.length;i++) {//在容器中添加按钮,设置按钮布局c.add(border[i],new JButton(buttonName[i]));}setSize(350,200); //设置窗体大小setVisible(true); //设置窗体可见//设置窗体关闭方式setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);}public static void main(String[] args) {new BorderLayoutPosition();}}

add()方法提供在容器中添加组件的功能,并同时设置组建的摆放位置。

网格布局管理器

网络布局管理器将容器划分为网格,所以组件可以按行和列进行排列。

在网格布局管理器中,每一个组件的大小都相同,并且网格中空格的个数由网格的行数和列数决定。

组件从网格的左上角开始,按照从左到右、从上到下的顺序加入到网格中,而且每一个组件都会填满整个网格,改变窗体的大小,组件的大小也会改变。

网格布局管理器主要有以下两个常用的构造方法:

public GridLayout(int rows,int columns)

public GridLayout(int rows,int columns,int horizGap,int vertGap)

rows与columns参数代表网格的行数与列数,这两个参数只有一个参数可以为0,代表一行或一列可以排列任意多个组件;参数horizGap与vertGap指定网格之间的距离,其中horizGap参数指定网格之间的水平距离,vertGap参数指定网络之间的垂直距离。

网格组布局管理器

由GridBagLayout类实现的布局管理器称为网格组布局管理器,

它实现了一个动态的矩形网格,可以根据实际需要随意增减矩形网格的行数和列数。

向GridBagLyout类管理的容器中添加组件时,需要为每个组件创建一个与之关联的GridBagConstants类的对象,通过该类的属性可以设置组件的布局信息。 

通过GridBagLayout类实现的矩形网格的绘制方向由容器决定。 如果容器的方向是从左到右,则位于矩形网格左上角的单元格的列索引为0,此时组件左上角的点为起始点;如果容器的方向是从右到左,则位于矩形网格右上角的单元格的列索引为0,此时组件右上角的点为起始点。

详细讲解GridBagLayout类中各个属性的功能和使用方法,以及在使用过程中需要注意的一些事项。

1.grid和gridy属性

这两个属性用来设置组件起始点所在单元格的索引值。需要注意的是,属性gridx设置的是x轴,所以它表示的是组件起始点所在列的索引;属性gridy设置的是Y轴的索引值,所以它表示的是组件起始点所在行的索引。     

     

gridwidth和gridheight属性

这两个属性用来设置组件占用网格组的行数和列数。属性gridwidth为组件占用网格组的列数,也可以理解为以单元格为单位组件的宽度:属性gridheight为组件占用网格组的行数,也可以理解为以单元格为单位组件的高度。

anchor属性

属性anchor用来设置组件在其所在显示区域的显示位置。通常将显示区域从方向上划分为9个方位。

fill属性

属性fill用来设置组件的填充方式。当单元格显示区域的面积大于组件面积,或者开一个组件占用多个单元格时,显示组件可能不必占用所有显示区域,在这种情况下可以通过fill属性设置组件的填充方式。可以利用4个静态常量设置该属性,默认情况下是将该属性设置为静态常量NONE,既不调整组件大小至填满显示区域;如果该属性设置为静态常量HORIZONTAL,表示只调整组件水平方向的大小(组件宽度)至填满显示区域;如果将该属性设置为静态常量VERTICAL,表示只调整组件垂直方向的大小(组件高度)至填满显示区域;如果将该属性设置为静态常量BOTH,则表示同时调整组件的宽度和高度至填满显示区域。

         inserts属性

属性insets用来设置组件四周与单元格边缘之间的最小距离。该属性的类型为Insets.Insets类仅有一个构造方法Insets(int top,int left,int bottom,int right),它的4个入口参数以此为组件上方、左侧、下方和右侧的最小距离,单位为像素。   

         ipadx和ipady属性

这两个属性用来修改组件的首选大小,属性ipadx用来修改组建的宽度,属性ipady用来修改组件的高度,如果为正数,则在首选大小的基础上增加指定的宽度和高度,如果为负数,则在首选大小的基础上减小指定的宽度和高度。 

weightx和weighty属性

这两个属性用来设置网格组的每一行和每一列对额外空间的分布方式。在不设置属性weightx和weighty的情况下,当窗体调整到足够大时,组件全部聚集在窗体的中央,在组件四周出现了大片的额外空间,为了避免,可以通过这两个属性设置网格组的每行每列对额外空间的分布方式。如果在该行中设置了多个weighty属性,则取它们的最大值为该行的分布方式。

在设置网格组的每一行和每一列对额外空间的分布方式时,建议只设置第一行的weightx属性和第一列的weighty属性,这样会方便前期调试和后期维护。

网格组的行和列对额外空间的分布方式完全相同,下面以网格组的行为为例详细讲解对额外空间的分布方式。网格组布局管理器首先计算出每一行的分布方式,即获取每一行的weighty属性的最大值,然后计算每个最大值占所有最大值总和的百分比,最后将额外空间的相应百分比分配给对应行。

在设置网格组的每一行和每一列对额外空间的分布方式时,建议为各个属性按百分比取值。

常用面板

面板也是一个Swing容器,它可以作为容器容纳其他组件,但它也必须被添加到其他容器中。Swing中常用的面板包括JPanel面板以及JScrollPane面板。

JPanel面板

JPanel面板可以聚集一些组件来布局。面板也是一种容器,因为它继承自java.awt.Container类。

JScrollPane面板

在设置面板时,可能会遇到在一个较小的容器窗体中显示一个较大部分的内容的情况,这时可以使用JScrllPane面板。此面板是带滚动条的面板,它也是一种容器,但是只能放置一个组件,并且不可以使用布局管理器。如果需要在JScrollPane面板中放置多个组件,需要将多个组件放置在JPanel面板上,然后将JPanel面板作为一个整体组件添加在JScrollPane组件上。

按钮组件

按钮在Swing组件中是较为常见的组件,用于触发特定动作。Swing中提供多种按钮,包括提交按钮、复选框、单选按钮等,这些按钮都是从AbstarctButon类中继承而来的。

提交按钮组件

Swing中的提交按钮(JButton)由JButton对象表示,其构造方法主要有以下几种方式:

public JButton()  //可以生成不带任何文本组件的对象和图标,能在以后使用相应方法为按钮设置指定的文本和图标

public JButton(String text) 

public JButton(Icon icon)

public JButton(String text,Icon icon)

通过使用上述构造方法,在Swing按钮上不仅能显示文本标签,还可以显示图标。

单选按钮组件

单选按钮(JRadioButton)显示一个圆形图标,并且在该图标旁放置一些说明性文字,而在应用程序中,一般将多个单选按钮放置在按钮组中,使这些单选按钮表现出某种功能,当用户选中某个单选按钮后,按钮中其他按钮将被自动取消。控制按钮的诸多方法都是从AbstractButton类中的方法

1.单选按钮

可以使用JRadioButton类中的构造方法创建单选按钮对象。常用构造方法如下:
public JRadioButton().。

public JRadioButton(Icon icon)。

public JRadioButton(Icon icon,boolean selected)。

public JRadioButton(String text)。

public JRadioButton(String text,Icon icon)。

public JRadioButton(String text,Icon icon,boolean selected)。

在初始化单选按钮时,可以同时设置单选按钮的图标、文字以及默认是否被选中等属性。

按钮组

在Swing中存在一个ButtonGroup类,用于产生按钮组,如果希望将所有的单选按钮放置在按钮组中,需要实例化一个JRadioButton对象,并使用该对象调用add()方法添加单选按钮。

JRadioButton jr1=new JRadioButton();
JRadioButton jr2=new JRadioButton();
JRadioBUtton jr3=new JRadioButton();
ButtonGroup group=new ButtonGroup();
group.add(jr1);
group.add(jr2);
group.add(jr2);
group.add(jr3);

复选框组件

复选框在Swing组件中的使用也非常广泛,它具有一个方块图标,外加一段描述性文字。与单选按钮唯一不同的是,复选框可以进行多选设置,每一个复选框都提供选中与不选中两种状态。

复选框用JCheckBox类对象表示

JcheckBox的常用构造方法如下:

public JCheckBox()

public JCheckBox(Icon icon,boolean checked)

public JCheckBox(String text,boolean checked)

列表组件

Swing中提供两种列表组件,分别为下拉列表框与列表框。下拉列表框与列表框都是带有一系列的项目的组件,用户可以从中选择需要的项目。列表框较下拉列表框更直观,他将所有的项目罗列在列表框中;但下拉列表框较列表框更为便捷、美观,他将所有的项目隐藏起来,当用户选用其中的项目时才显现出来。

下拉列表框组件

JComboBox类

Swing中的下拉列表框不仅可以供用户从中选择项目,也提供编辑项目中内容的功能。

下拉列表框是一个带条状的显示区,它具有下拉功能。在下拉列表框的右方存在一个倒三角形的按钮,当用户单击该按钮时,下拉列表框中的项目将会以列表形式显示出来。

Swing中的下拉列表框使用JComboBox类对象来表示,它是javax.swing.JComponent类的子类。它的常用构造方法如下:

public JComboBox()

public JComboBox(ComboBoxModeldataModel)

public JComboBox(Object[] arrayData)

public JComboBox(Vector vector)

在初始化下拉列表框时,可以选择同时下拉列表框中的项目内容,也可以在程序中使用其他方法设置下拉列表框中的内容。

JComboBox模型

在开发程序中,一般将下拉列表框中的项目封装为ComboBoxModel的情况比较多。ComboBoxModel为接口,它代表一般模型,可以自定义一个类实现该接口,然后再初始化JComboBoxModel接口类型,但是必须实现以下两种方法:

public void setSelectedItem(Object item)

public ObjectgetSelectedItem()

其中setSelectedItem()方法用于设置下拉列标框中的选中项,getSelectedItem()方法用于返回下拉列表框中的选中项。

getSize():返回列表的长度

getElementAt(int index):返回指定索引处的值

列表框组件

列表框与下拉列表框的区别不仅表现在外观上,当激活下拉列表框时,还会出现下拉列表框中的内容,;但列表框只是在窗体上占据固定的大小,如果需要列表框具有滚动效果,可以将列表框放入滚动面板中。

Swing中使用JList类对象来表示列表框,下面列举几个常用的构造方法。

public void JList()

public void JList(Object[] listData)

public void JList(Vector listData)

public void JList(ListModel dataModel)

存在一个没有此参数的构造方法,可以通过在初始化列表框后使用setListData()方法对列表框进行设置。设置的方式由3种类型,包括数组、Vector类型和ListModel没模型。

当使用数组作为构造方法的参数时,首先需要创建列表项目的数组,然后再利用构造方法来初始化列表框。

使用数组作为初始化列表框的参数

String contents={"列表1“,"列表2“,"列表3”,"列表4“};

JList jl=new JList(contents);

使用Vector类型数据作为初始化列表框的参数

Vector contents=new Vector();

JList jl=new JList(contents);

JList jl=new JList(contents);

contents.add("列表1”);

contents.add("列表2");

使用ListModel模型为参数,需要创建ListModel对象。ListModel是Swing包中的一个接口它提供了获取列表框属性的方法。通常情况下,为了使用户不完全实现ListModel接口中的方法,通常先自定义一个类继承实现该接口的抽象类AbstractListModel。在这个类中提供了getElementAt()与getSize()方法,其中getElementAt()方法代表根据项目的索引获取列表框中的值,而getSize()方法用于获取列表框中的项目个数。

public class JListTest extends JFrame {public JListTest() {Container cp=getContentPane();cp.setLayout(null);JList<String> jl=new JList<>(new MyListModel()); //JDK7新特性JScrollPane js=new JScrollPane(jl);js.setBounds(10,10,100,100);cp.add(js);setTitle("在这个窗体中使用了列表框");setSize(200,150);setVisible(true);setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);}public static void main(String[] args) {JListTest a=new JListTest();}
}
class MyListModel extends AbstractListModel<String>{private static final long serialVersionUID=1L;private String[] contents= {"列表1","列表2","列表3","列表4","列表5","列表6"};public String getElementAt(int x) {if(x<contents.length) {return contents[x];}elsereturn null;}public int getSize() {return contents.length;}
}

       使用DefaultListModel类创建列表框,该类扩展了AbstractListModel类,也可以通过DefaultListModel对象向上转型为ListModel接口初始化列表框,同时DefaultListMoel类提供了addElement()方法实现将内容添加到列表框中。

使用DefaultListModel类创建列表框

final String[] flavors={"列表1","列表2","列表3","列表4","列表5","列表6"};
fianl DefaultListModel iItems=new DefaultListModel();
final JList Ist=new JList(Items); //实例化JList对象
for(int i=0;i<4;i++){iltems.addElement(flavors[i]); //为模型增加内容
}

         文本组件

文本组件在实际项目中使用最为广泛,尤其是文本框与密码框组件。通过文本组件可以很轻松的处理单行文字、多行文字、口令字段。

文本框组件

文本框用来显示或编辑一个单行文本,在Swing中通过java.swing.JTextField类对象创建,该类继承了javax.swing.text.JTextComponent类,下面列举了一些创建文本框常用的构造方法。

public JTextField()

public JTextField(String text)

public JTextField(int fieldeidth)

public JTextField(String text,int fieldwidth)

public JTextField(Document docModel,String text,int fieldWidth)

通过在初始化文本框时设置文本框的默认文字、文本框的长度。

密码框组件

  密码框与文本框的定义与用法基本相同,唯一不同的是密码框将用户输入的字符串以某种符号进行加密,密码框对象是通过javax.swing.JPasswordField类来创建的,JPasswordField类的构造方法与JTextField类的构造方法非常相似。

public JPasswordField()

public JPasswordField(String text)

public JPasswordField(int fieldwidth)

public JPasswordField(String text,int fieldwidth)

public JPasswordField(Document docModel,String text,int fieldWidth)

  在程序中定义密码框
JPasswordField jp=new JPasswordField(); jp.setEchoChar('#'); //设置回显字符

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

  文本域组件

Swing中任何一个文本区域都是JTextArea类型的对象。JTextArea常用的构造方法如下:

public JTextArea()

public JTexArea(String text)

public JTextArea(int rows,int columns)

public JTextArea(Document doc)

public JTextArea(Document doc,String Text,int rows,int columns)

上述构造方法可以在初始化文本域时提供默认文本以及文本域的长与宽     

JTextArea类中存在一个setLineWrap()方法,该方法用于设置文本域是否可以自动换行。如果将该方法的参数设置为true,文本域将自动换行,否则不自动换行。

常用事件监听器

监听事件简介

在Swing事件模型中由3个分离的对象完成对事件的处理,分别为事件源、事件以及监听程序。事件源触发一个事件,它被一个或多个“监听器"接收,监听器负责处理事件。

所谓事件监听器,实质上就是一个”实现特定类型监听器接口"的类对象。事件几乎都以对象来表示,它是某种事件类的对象,事件源(如按钮)会在用户做出相应的动作(如按钮被按下)时产生事件对象,如动作事件对应ActionEvent类对象,同时要编写一个监听器的类必须实现相应的接口,如ActionEvent类对应的是ActionListener接口,需要获取某个事件对象必须实现相应的接口,同时需要将接口中的方法一一实现。最后事件源(按钮)调用相应的方法加载这个"实现特定类型监听器接口"的类对象,所有的事件源都可以为组件添加或移除相应的事件监听器。

动作事件监听器

动作事件监听器是Swing中比较常用的事件监听器,很多组件的动作都会使用它监听,如按钮被单击。   

     

一般情况下,为事件源做监听事件应使用匿名类形式。

焦点事件监听器

焦点事件监听器在实际项目开发中应用也比较广泛,如将光标焦点离开一个文本框时需要弹出一个对话框,或将焦点返回给该文本框等。

                                            

相关文章:

Java_Swing程序设计

swing组件允许编程人员在跨平台时指定统一的外观和风格。 Swing组件通常被称为轻量级组件&#xff0c; JFrame在程序中的语法格式&#xff1a; JFrame jfnew JFrame(title); Container containerjf.getContentPane(); jf:JFrame类的对象 container:Container类的对象。 J…...

ZeroBind:DTI零样本预测器

现有的药物-靶点相互作用&#xff08;DTI&#xff09;预测方法通常无法很好地推广到新的&#xff08;unseen&#xff09;蛋白质和药物。 在这项研究中&#xff0c;作者提出了一种具有子图匹配功能的蛋白质特异性元学习框架 ZeroBind&#xff0c;用于根据其结构预测蛋白质-药物相…...

Win10子系统Ubuntu实战(一)

在 Windows 10 中安装 Ubuntu 子系统&#xff08;Windows Subsystem for Linux&#xff0c;简称 WSL&#xff09;有几个主要的用途和好处&#xff1a;Linux 环境的支持、跨平台开发、命令行工具、测试和验证、教育用途。总体而言&#xff0c;WSL 提供了一种将 Windows 和 Linux…...

[足式机器人]Part3 机构运动学与动力学分析与建模 Ch00-2(3) 质量刚体的在坐标系下运动

本文仅供学习使用&#xff0c;总结很多本现有讲述运动学或动力学书籍后的总结&#xff0c;从矢量的角度进行分析&#xff0c;方法比较传统&#xff0c;但更易理解&#xff0c;并且现有的看似抽象方法&#xff0c;两者本质上并无不同。 2024年底本人学位论文发表后方可摘抄 若有…...

云计算历年题整理

目录 第一大题 第一大题HA计算 给出计算连接到EC2节点的EBS的高可用性(HA)的数学公式&#xff0c;如场景中所述&#xff1b;计算EC2节点上的EBS的高可用性(HA)&#xff1b;场景中80%的AWS EC2节点用于并行处理&#xff0c;总共有100个虚拟中央处理单元(vCPUs)用于处理数据&a…...

2401vim,vim重要修改更新大全

原文 2023 更好的UTF-16支持 添加strutf16len()和utf16idx(),并在byteidx(),byteidxcomp()和charidx()中添加utf16标志,在内置.txt文档中. 添加crypymethod xchacha20v2 与xchacha20基本相同,但更能抵御libsodium的变化. 2022 添加"smoothscroll" 用鼠标滚动…...

安卓多用户管理之Userinfo

目录 前言Userinfo----用户信息1.1 属性1.2 构造器1.3 信息的判断及获取方法1.3.1 获取默认用户类型1.3.2 基础信息判断 1.4 序列化部分 总结 前言 UserManagerService内部类UserData中有一个Userinfo类型的info参数&#xff0c;在UserData中并未有所体现&#xff0c;但在后续…...

JavaScript-流程控制-笔记

1.流程语句的分类 顺序结构 分支结构 循环结构 2.if语句 1&#xff09;if结构 if( 条件 ){ // 条件成立执行的代码 } 2&#xff09;if else 结构 if( 条件 ){ // 条件成立执行的代码 }else{ // 条件不成…...

springboot + vue3实现增删改查分页操作

springboot vue3实现增删改查分页操作 环境最终实现效果实现功能主要框架代码实现数据库后端前端 注意事项 环境 jdk17 vue3 最终实现效果 实现功能 添加用户&#xff0c;禁用&#xff0c;启用&#xff0c;删除&#xff0c;编辑&#xff0c;分页查询 主要框架 后端 spri…...

leetcode01-重复的子字符串

题目链接&#xff1a;459. 重复的子字符串 - 力扣&#xff08;LeetCode&#xff09; 一般思路&#xff1a; 如果存在k是S的字串&#xff0c;记k的长度为s&#xff0c;S的长度为n&#xff0c;则一定有n是s的倍数&#xff0c;且满足对于j∈[s,n]&#xff0c;一定存在s[j]s[j-s]; …...

目标检测数据集 - 夜间行人检测数据集下载「包含VOC、COCO、YOLO三种格式」

数据集介绍&#xff1a;夜间、低光行人检测数据集&#xff0c;真实场景高质量图片数据&#xff0c;涉及场景丰富&#xff0c;比如夜间街景行人、夜间道路行人、夜间遮挡行人、夜间严重遮挡行人数据&#xff1b;适用实际项目应用&#xff1a;公共场所监控场景下夜间行人检测项目…...

【YOLO系列】 YOLOv4思想详解

前言 以下内容仅为个人在学习人工智能中所记录的笔记&#xff0c;先将目标识别算法yolo系列的整理出来分享给大家&#xff0c;供大家学习参考。 本文未对论文逐句逐段翻译&#xff0c;而是阅读全文后&#xff0c;总结出的YOLO V4论文的思路与实现路径。 若文中内容有误&#xf…...

查询json数组

步骤一&#xff1a;创建表格 首先&#xff0c;我们需要创建一个表格来存储包含JSON对象数组的数据。可以使用以下代码创建一个名为 my_table 的表格&#xff1a; CREATE TABLE my_table (id INT PRIMARY KEY AUTO_INCREMENT,json_data JSON ); 上述代码创建了一个包含两个列的…...

Docker mysql 主从复制

目录 介绍&#xff1a;为什么需要进行mysql的主从复制 主从复制原理&#xff1a; ✨主从环境搭建 主从一般面试问题&#xff1a; 介绍&#xff1a;为什么需要进行mysql的主从复制 在实际的生产中&#xff0c;为了解决Mysql的单点故障已经提高MySQL的整体服务性能&#xff…...

第7章-第1节-Java中的异常处理

1、异常Exception概述&#xff1a; 1&#xff09;、异常的概念&#xff1a; 现实生活中万物在发展和变化会出现各种各样不正常的现象。 例如&#xff1a;人的成长过程中会生病。 实际工作中&#xff0c;遇到的情况不可能是非常完美的。 比如&#xff1a;你写的某个模块&…...

使用python生成一个月度账单消费金额柱状图表

阿里云月度账单根据月份、消费金额&#xff08;可开票&#xff09;生成一个柱状图表 import pandas as pd import matplotlib.pyplot as plt import os# 设置中文字体 plt.rcParams[font.sans-serif] [SimHei] # 用于显示中文的宋体# 获取当前工作目录下所有CSV文件 csv_fil…...

将一个独立的磁盘添加到已有的 `/` 分区

将一个独立的磁盘添加到已有的 / 分区是比较复杂的&#xff0c;因为 / 分区已经是一个逻辑卷&#xff08;LVM&#xff09;。在这种情况下&#xff0c;可以扩展现有的 LVM 体积组&#xff08;Volume Group&#xff09;&#xff0c;然后扩展 / 逻辑卷&#xff08;Logical Volume&…...

AI智能电销器人需要注意哪些问题呢

随着科技的不断发展&#xff0c;人们出行变得越来越方便&#xff0c;市面上很多产品也越来越智能化&#xff0c;高科技的产品不仅改变了我们的生活方式而且也改变了企业的竞争方式&#xff0c;很多的企业尤其是电销行业中的大佬己经意识到了AI电销机器人的好处&#xff0c;因此…...

呼叫中心研究分析:到2027年市场规模预计将达4966亿美元

由于业务运营中以客户为中心的方法的兴起&#xff0c;呼叫中心市场近年来出现了显着增长。随着对客户满意度的日益重视&#xff0c;全球对呼叫中心服务的需求猛增。在本次分析中&#xff0c;我们将从全球和中国的角度审视呼叫中心市场的发展趋势。全球市场&#xff1a; 到 2027…...

工业数据采集分析——工厂大脑 提升综合经济效益

随着企业对数字化的认知越来越清晰&#xff0c;对工业数智化的战略越来越明确&#xff0c;企业的诉求也在发生转变。中国的工业企业经过近几十年的发展&#xff0c;自动化、信息化&#xff0c;以及一些基础的数据系统建设在不同的行业中慢慢地推进。近几年&#xff0c;工业企业…...

python系列教程218——生成器表达式

朋友们&#xff0c;如需转载请标明出处&#xff1a;https://blog.csdn.net/jiangjunshow 声明&#xff1a;在人工智能技术教学期间&#xff0c;不少学生向我提一些python相关的问题&#xff0c;所以为了让同学们掌握更多扩展知识更好地理解AI技术&#xff0c;我让助理负责分享…...

jquery 实现简单的标签页效果

实现 <!DOCTYPE html> <html> <head><title>jq 实现简单的标签页效果</title><script src"/jquery/jquery-1.11.1.min.js"></script><style>.tab {cursor: pointer;width:100px;height:30px;float:left;text-align…...

C++ Web框架Drogon初体验笔记

这段时间研究了一下C的Web框架Drogon。从设计原理上面来说和Python的Web框架是大同小异的&#xff0c;但是难点在于编译项目上面&#xff0c;所以现在记录一下编译的过程。下面图是我项目的目录。其中include放的是头文件&#xff0c;src放的是视图文件&#xff0c;static放的是…...

x-cmd pkg | busybox - 嵌入式 Linux 的瑞士军刀

目录 简介首次用户功能特点竞品和相关作品 进一步阅读 简介 busybox 是一个开源的轻量级工具集合&#xff0c;集成了一批最常用 Unix 工具命令&#xff0c;只需要几 MB 大小就能覆盖绝大多数用户在 Linux 的使用&#xff0c;能在多款 POSIX 环境的操作系统&#xff08;如 Linu…...

Java异常简单介绍

文章目录 1. 异常分类和关键字1.1 分类1.2 关键字 2. Error2.1 Error定义2.2 常见的Error2.2.1 VirtualMachineError2.2.2 ThreadDeath2.2.3 LinkageError2.2.4 AssertionError2.2.5 InternalError2.2.6 OutOfMemoryError2.2.6.1 OOM原因2.2.6.2 OutOfMemoryError会导致宕机吗 …...

ocrmypdf_pdf识别

安装 安装说明 https://ocrmypdf.readthedocs.io/en/latest/installation.html#native-windows提到需要的软件&#xff1a; Python 3.7 (64-bit) or later Tesseract 4.0 or later Ghostscript 9.50 or later 安装 ocrmypdf pip install ocrmypdf 添加语言包 https://oc…...

卷积神经网络|猫狗分类系列--导入kaggle猫狗数据集

解决任何真实问题的重要一步是获取数据&#xff0c;Kaggle提供了大量不同数据科学问题的竞赛。 我们将从 https://www.kaggle.com/competitions/dogs-vs-cats/data 下载猫狗数据集&#xff0c;并对其进行一定的操作&#xff0c;以正确的导入到我们的计算机&#xff0c;为接下…...

【linux 多线程并发】线程本地数据存储的两种方式,每个线程可以有同名全局私有数据,以及两种方式的性能分析

线程本地数据(TLS) ​专栏内容&#xff1a; 参天引擎内核架构 本专栏一起来聊聊参天引擎内核架构&#xff0c;以及如何实现多机的数据库节点的多读多写&#xff0c;与传统主备&#xff0c;MPP的区别&#xff0c;技术难点的分析&#xff0c;数据元数据同步&#xff0c;多主节点的…...

2401d,d导入C的问题

原文 D中是否可用仅C头文件库? 在C语言中,我需要这样做: #define STB_DS_IMPLEMENTATION #include "stb_ds.h"在包含h文件前,必须在单个C文件中定义. 在D中试过: enum STB_DS_IMPLEMENTATION 1; import stb_ds;但它不管用.有建议吗?也许使用中间C文件会工作 ,但…...

SpringCloud GateWay实现路由限流

目录 RequestRateLimiterGatewayFilterFactory令牌桶算法实现限流 RequestRateLimiterGatewayFilterFactory Spring Cloud Gateway 内置了一个限流功能的过滤器工厂&#xff0c;那就是RequestRateLimiterGatewayFilterFactory &#xff0c;它使用 Redis 和 Lua 脚本实现令牌桶…...

网站开发php和ui/域名解析ip地址查询

一、NFS服务器的工作原理&#xff1b;NFS 是分布式计算机系统的一个组成部分&#xff0c;可实现在异构网络上共享和装配远程文件系统。NFS由sun公司开发&#xff0c;目前已经成为文件服务的一种标准&#xff08;RFC1904 RFC1813),其最大的功能是可以通过网络让不同的操作系统的…...

张家港做政府网站的公司/网页设计教程

转自&#xff1a;http://underthehood.blog.51cto.com/2531780/687160By RaySaint 2011/10/12 本文的主要目的是讲一下如何创建k-d tree对目标物体的特征点集合进行数据组织和使用k-d tree最近邻搜索来加速特征点匹配。上面已经讲了特征点匹配的问题其实上是一个最近邻&#xf…...

哪里有网站制作/seo网站首页推广

一、生产者消费模型补充 总结&#xff1a; ---生产者消费者模型程序中两种角色&#xff1a;①负责生产数据&#xff08;生产者&#xff09;&#xff1b;②负责处理数据&#xff08;消费者&#xff09; ---生产者消费者模型的作用&#xff1a;平衡生产者与消费者之间的速度差。 …...

企业网站排名关键/关键词代发排名

1、通过ID选取元素&#xff08;getElementById&#xff09; 1&#xff09;使用方法&#xff1a;document.getElementById("domId") 其中&#xff0c;domId为要选取元素的id属性值 2&#xff09;兼容性&#xff1a;低于IE8版本的IE浏览器对getElementById方…...

做网站买那种服务器/营销策略有哪些

23种设计模式知识要点 这是一篇摘抄文章&#xff01;&#xff01;&#xff01;问我我也不一定会&#xff01;&#xff01;&#xff01; 1.单例模式&#xff08;Singleton Pattern&#xff09; 定义&#xff1a;Ensure a class has only one instance, and provide a global …...

网站制作农业/产品的推广及宣传思路

Activiti详细介绍1 介绍   Alfresco软件在2010年5月17日宣布Activiti业务流程管理&#xff08;BPM&#xff09;开源项目的正式启动&#xff0c;其首席架构师由业务流程管理BPM的专家 Tom Baeyens担任&#xff0c;Tom Baeyens就是原来jbpm的架构师&#xff0c;而jbpm是一个非常…...