java swing 网格布局(GridLayout中如何设置一个按钮占两个位置,就像我截图的那样)

2024-07-18 14:55:21 1

java swing 网格布局(GridLayout中如何设置一个按钮占两个位置,就像我截图的那样)

大家好,如果您还对java swing 网格布局不太了解,没有关系,今天就由本站为大家分享java swing 网格布局的知识,包括GridLayout中如何设置一个按钮占两个位置,就像我截图的那样的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

本文目录

GridLayout中如何设置一个按钮占两个位置,就像我截图的那样

思路:对窗体应用边界布局,在NORTH上放置一个文本框,在CENTER上放置一个面板,面板上放置计算器的相应按钮

//GridFrame.Java

import java.awt.*;

import javax.swing.*;

class GridFrame extends JFrame{

         //定义面板,并设置为网格布局,4行4列,组件水平、垂直间距均为3

          JPanel p=new JPanel(new GridLayout(4,4,3,3));

          JTextArea t=new JTextArea();        //定义文本框

          //定义字符串数组,为按钮的显示文本赋值

         //注意字符元素的顺序与循环添加按钮保持一致

          String str={"7","8","9","/","4","5","6","*","1","2","3","-","0",".","=","+"};

     public GridFrame(String s){

                   super(s);  //为窗体名称赋值

        setLayout(new BorderLayout());     //定义窗体布局为边界布局

        JButton btn;                             //声明按钮数组

        btn=new JButton;     //创建按钮数组

                   //循环定义按钮,并添加到面板中

        for(int i=0;i《str.length;i++){

               btn);

               p.add(btn);

         }

                    //将文本框放置在窗体NORTH位置

            getContentPane().add(t,BorderLayout.NORTH);     

            //将面板放置在窗体CENTER位置

            getContentPane().add(p,BorderLayout.CENTER);   

            setVisible(true);

            setSize(250,200);

            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            setLocationRelativeTo(null);               //让窗体居中显示

        }

      public static void main(String args){

         GridFrame gl=new GridFrame("网格布局计算机!");

         }

 

程序执行结果如下图:

简述java程序设计中界面设计中的三种布局方式

1 边框布局JPanel panel1=(JPanel)getContentPane();panel1.setLayout(new FlowLayout());凭着我们现在所积累的阅读程序的功夫,应该能够很快地知道我们通过第一条语句创建了一个容器JPanel类的panel1。而接下来,我们则调用了panel1.setLayout(new FlowLayout()),在上一章中,我们一直没有对它进行相应的分析。现在该是揭开它的面纱的时候了。单词layout的中文意思是“布局”、“布置”,setLayout就是设置布局格式。也就是说,容器panel1的方法setLayout是用来设置布局格式的。那么,我们一直用的是什么模式呢?对,就是后面括号里的FlowLayout()。顾名思义,也就是流布局方式。这是一种顺其自然的方式:从左到右,一个个对象地摆放,摆不下,就摆到下一行。所以,我们就无法去控制它。从本章开始,我们就要学习一种控制布局的方法。在Java语言中,提供了各种布局管理器,以便大家能够达到这一目的。通常我们最常使用的布局管理器是:Border Layout(边框布局管理器),如下图所示,边框布局管理器将一个屏幕分成了五个部分:东、南、西、北、中。如果要使用这种边框布局管理进行布局控制,我们必须先将“容器”设置为“边框布局控制模式”,具体来说,就是当调用setLayout方法为容器设置布局控制模式时,参数设置为BorderLayout。例如:JPanel panel1=(JPanel)getContentPane();panel1.setLayout(new BorderLayout());然后,我们就可以在使用容器的add方法添加部件时,附加上位置参数,使得该部件显示在指定的位置上。位置参数分别是:BorderLayout.NORTH 位置为北BorderLayout.SOUTH 位置为南BorderLayout.EAST 位置为东BorderLayout.WEST 位置为西BorderLayout.NORTH 位置为中心实例说明下面,我们就来试一试,使用按钮排出五个方向!请创建一个testBorder.java,输入以下源程序:源程序:useTextArea.javaimport java.awt.*;import javax.swing.*;import java.applet.Applet;public class testBorder extends JApplet{public void init(){ JPanel panel1=(JPanel)getContentPane();panel1.setLayout(new BorderLayout());JButton north=new JButton("North");JButton south=new JButton("South");JButton east=new JButton("East");JButton west=new JButton("West");JButton center=new JButton("Center");panel1.add(north,BorderLayout.NORTH);panel1.add(south,BorderLayout.SOUTH);panel1.add(east,BorderLayout.EAST);panel1.add(west,BorderLayout.WEST);panel1.add(center,BorderLayout.CENTER);}}然后,我们使用javac编译这个程序,然后一个显示这个Java Applet的HTML页面。最后调用appletviewer来观察这个页面为了试一下,如果并没有在每个位置都安排一个部件,那么会怎么样呢?我们修改一下程序,将panel1.add(west,BorderLayout.WEST);这一行注释掉(就是在前面加上“//”号),也就是不显示西边的按钮,看一下结果如何。正如上图(图10-3)所示,西边由于没有部件,因此“中”就朝西靠,“占领”了它的位置。而如果我们修改一下程序,让中间的按钮不显示的话,就会出现如图10-5的样子,中间的区域并未并占领,而是空在那里了!这是与其它位置不同的地方,大家一定要记住。一些提示:其实这很好理解,如果中间的那一块的位置被其它位置上的部件占领的话,就会使得分不清“东”、“南”、“西”、“北”了。倒成了“左上角”、“左下角”、“右上角”、“右下角”了。2 网格布局实例说明下面,我们来看一个新的程序!首先创建一个testGrid.java文件,并输入以下源程序:源程序:testGrid.javaimport java.awt.*;import javax.swing.*;import java.applet.Applet;public class testGrid extends JApplet{String buttonLabels={"No.1","No.2","No.3","No.4","No.5","No.6","No.7","No.8","No.9"};public void init(){ JPanel panel1=(JPanel)getContentPane();panel1.setLayout(new GridLayout(3,3));for (int x=0; xpanel1.add(new JButton(buttonLabels));}}然后,我们使用javac编译这个程序,然后一个显示这个Java Applet的HTML页面。最后调用appletviewer来观察这个页面我们主要是关心如何摆放各个部件,而不是如何构建一个程序。所以,正如本例中的按钮一下,这一章中的所有部件都是一个样子,没有任何作用。这样也使得程序尽可能地变短了,更易于大家阅读和理解程序。下面,我们就一起来看一下上面的这个程序。1) String buttonLabels={"No.1","No.2","No.3","No.4","No.5","No.6","No.7","No.8","No.9"}我想大家都能很轻松地读懂这条语句,我们在此定义了一个字符串数组buttonLabels,它有9个字符串成员,也就是我们后面定义的9个按钮的标签文本。值得注意的是,大家一定要知道,buttonLabels。这对更好地理解后面的程序十分重要,也是基本功之一。2) JPanel panel1=(JPanel)getContentPane();panel1.setLayout(new GridLayout(3,3));在这两行程序中,我们首先定义了一个容器部件panel1。然后调用setLayout方法设置布局管理器。这里我们使用了一个新的布局管理器:GridLayout,网格布局管理器。我们注意到GridLayout的后面带了两个参数:3,3。这有什么用呢?我们一起来看一下GridLayout方法的定义:public GridLayout (int rows,int cols)我们看一下这两个参数,首先它们都是int型—整型的。那么它们分别起到什么作用呢?我们还是采用顾名思义法吧!row的中文意思是行,col的中文意思是列,后面加上一个s,是这两个单词的复数形式。好,我们现在串起来想一下,我们定义了一个网格布局,然后定了它的行、列数!这不就画出了这个网格了吗?如果我们在语句是使用GridLayout(5,5)的话,就会把整个容器分成25个单元而我们在程序中使用的是GridLayout(3,3),所以它就将整个容器分成了注意:这种划分是一种逻辑上的,暗藏式的划分,而不会把格子给划出来。另外,我们这里举的两个例子行、列都相等,其实完全可以不等。3) for (int x=0; xpanel1.add(new JButton(buttonLabels));这是一个循环结构的程序。我们先看循环语句,循环的初值是“x=0”,继续执行循环的条件语句是“xbuttonLabels.length就是用来请得字符串数组buttonLabels的长度!也就是这个字符串数组中有多少个字符串?我们知道,我们在该数组中定义了9个。从程序中,我们可以获知,当x=buttonLabels.length时,循环就将结束,应为它不满足条件x别忘了,我们使用buttonLabels嘛。在循环中,我们使用容器提供的add方法,将新定义的按钮部件添加进去。有时,我们可能想获得象下图所示的布局效果!让各个部件之间存在一些间隙。使用Java的网格布局可以实现吗?我很高兴地回答你:“可以!”,我们可以使用GridLayout的另一种构造器方法(签名不同)来实现:public GridLayout (int rows,int cols,int hgap,int vgap)在这个方法中,可以带上四个整型参数,前两个我们已经很熟悉了,行数与列数。后面则是两个新的参数。第一个是hgap,其中gap的意思是间隙、空隙的意思,而h则是horizontal(水平)的第一个字母。也就是说,我们可以通过hgap参数设置横向的间隙。第二个是vgap,v则是vertical(垂直)的第一个字母。也就是说,我们可以通过vgap参数设置纵向的间隙。自测练习1)_________________是网格布局管理器。a.BorderLayout b.GridLayout c.ReseauLayoutd.FlowLayout利用以下代码回答问题2、3、4、5:2)这个布局中有__________行?a.7行 b.5行 c.6行 d.8行3)这个布局中有__________列?a.7行 b.5行 c.6行 d.8行4)这个布局将容器分为_________个部分?a.48个 b.35个 c.30个 d.40个5)第5个部件位于__________位置。a.左上角 b.左下角 c.右上角 d.右下角 e.中间6)根据以下界面,编写一个程序图10-12 练习题图____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________7) 如果我们构建一个5*5的网格布局,但只在该容器中加入17个按钮,将会出现什么情况?请编写一个程序,来试一试效果。________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________练习答案1)b 没什么好解释的,请大家记住!2)a 第一个参数是行数,因此是7行。3)b 第二个参数是列数,因此为5列。4)b 7行5列,其7*5,35个部分嘛。5)c 第5个部件是第一行的最后一个,当然在右上角嘛。6)下面是一个实现的程序实例:源程序:lianxi10_2.javaimport java.awt.*;import javax.swing.*;import java.applet.Applet;public class lianxi10_2 extends JApplet{String buttonLabels={"1","2","3","4","5","6","7","8","9","*","0","#"};public void init(){ JPanel panel1=(JPanel)getContentPane();panel1.setLayout(new GridLayout(4,3,10,10));for (int x=0; xpanel1.add(new JButton(buttonLabels));}}7)下面是一个实现的程序实例:源程序:lianxi10_3.javaimport java.awt.*;import javax.swing.*;import java.applet.Applet;public class lianxi10_3 extends JApplet{String buttonLabels={"No.1","No.2","No.3","No.4","No.5","No.6","No.7","No.8","No.9","No.10","No.11","No.12","No.13","No.14","No.15","No.16","No.17"};public void init(){ JPanel panel1=(JPanel)getContentPane();panel1.setLayout(new GridLayout(5,5));for (int x=0; xpanel1.add(new JButton(buttonLabels));}}这个程序使用javac编译完后,编写一个包含这个类的HTML页面,再用appletviewer来观察发现运行结果如下图所示:图10-13 练习答案图这个输出是不是令你感到十分意外,整个程序根本不按要求分成5列,所以我们从这里得到一个使用网格布局中要十二分注意的一点:“请别忘了将网格填满”。否则程序的输出将不可预料。一些提示:如果你真的没有那么多东西来“占领”网格的话,我建议你使用一个空标签来填补这个空白的网格,使得程序的输出如你所愿。使用空标签的方法很容易:panel1.add(new Label(“”));从这里,我们也看出了,我们学习过的流布局管理器、边框布局管理器,以及我们刚学习过的网格布局管理器都比较死板,不够高级。10.3 组合布局传授新知正如我们在上一小节结束的时候说的一样,各种布局管理器都有自己的缺点,没有一种能够真正地完全满足我们编写GUI程序时的要求。而在Java语言中,允许在容器中加入其他容器,这样每个容器可以根据自己的需要采用不同的布局管理器,组合成为一个我们所需要的GUI程序界面。这种方法,我们就称之为组合布局。注意:与流布局、边框布局、网格布局不同,组合布局并不是一个新的布局管理器,它是通过结合各种布局管理器的优点,将它们组合地应用在GUI程序界面的开发中。这是一种布局管理的方法。也可以说是一种GUI程序界面的开发技巧。 当我们设计GUI程序界面时,最好先在纸上把它画出来,然后“分块解决”。也就是将能够组合在一起的部件找出来,将它们放在一个容器里,并为它们选择合适的布局管理器。然后把这些容器摆放在一起,就解决了。设计时还要考虑到窗体大小发生改变的时候,引起的部件形体变化。这方面,请你熟记几个设计技巧:1) 对于那些要求扁平状的部件,我们应该将它放置在边框布局中的南面或北面;2) 对于那些要求细高状的部件,我们应该将它放置在边框布局中的东面或西面;3) 对于那些可以随着窗体改变大小部分,我们可以将它放置在边框布局的中间;4) 如果我们要求部件保持大小相同,那么,我们就应该采用网格布局。下面,我们就通过几个实际的例子,来让大家领会和掌握这种设计的思路与方法。实例说明我们首先创建一个testCombination.java文件,然后输入以下源程序:源程序:testCombination.javaimport java.awt.*;import javax.swing.*;import java.applet.Applet;public class testCombination1 extends JApplet{public void init(){Frame frame1=new Frame("testCombination1");frame1.setLayout(new BorderLayout());TextArea text1=new TextArea();frame1.add(text1,BorderLayout.CENTER);JPanel panel1=(JPanel)getContentPane();panel1.setLayout(new GridLayout(1,3,10,5));panel1.add(new JButton("A"));panel1.add(new JButton("B"));panel1.add(new JButton("C"));frame1.add(panel1,BorderLayout.SOUTH);frame1.pack();frame1.show();}}然后,我们使用javac编译这个程序,然后一个显示这个Java Applet的HTML页面。最后调用appletviewer来观察这个页面,如下图所示:图10-14 程序testCombination.java的输出正如上图所示,程序的输出与以前不同,各个部件不是显示在Appletviewer程序框中,而是显示在另一个窗口中。这是怎么回事呢?下面我们就一起来看一下这个程序!传授新知在以前的程序中,我们一直都是使用容器JPanel,面板。而我们在这个程序中引进了一个新的容器Frame。使用了这个容器后,就会新创建一个窗口。这也就是为什么程序的输出有这么大的变化的原因。1)Frame frame1=new Frame("testCombination");这条语句,定义了一个Frame容器frame1,然后使用new操作符调用构造器方法,后面带的参数“testCombination”则是这个Frame的标题。一些提示:其实大家能Frame所体现出来的效果是很熟悉的,它等价于Windows中的窗体。而Frame的标题就是窗体的标题。2) frame1.setLayout(new BorderLayout());与JPanel容器一样,我们可以调用setLayout方法来设置Frame的布局管理器。在这里,我们将Frame容器frame1的布局管理器设置成为边框布局管理器(也就是我们在10.1小节中学习过的布局管理器)。3) frame1.add(text1,BorderLayout.CENTER);紧接着,我们调用frame1的add方法,将文本区部件text1添加到frame1容器中来。注意我们设置了它的位置:BorderLayout.CENTER。这是因为,我们希望这个文本区能够随着窗体的大小变化而变化。所以适合将其放在在中间位置。4) panel1.setLayout(new GridLayout(1,3,10,5));我们又定义了一个JPanel容器panel1,并将其的布局管理器设置为网格布局管理器。并通过指定参数,使得整个panel1被分成1行3列,水平空隙为10的网格。5) frame1.add(panel1,BorderLayout.SOUTH);这是组合布局方法最重要的一步,我们将panel1这个容器,加入到了frame1这个容器中去了。并且指定了panel1这个容器在整个frame1中所占的位置:BorderLayout.SOUTH,也就是下边。这样,panel1中包含的三个按钮就会永远(不管窗体大小如何改变)呆在文本区的下边,而且三个按钮的大小会根据窗体大小的改变而改变。一些提示:这是因为,panel1中的按钮是用网格布局的。6) frame1.pack();frame1.show();与JPanel不一样,使用Frame容器,不能够直接显示了出来。我们必须调用Frame容器的show方法才能使得Frame显示出来。而在使用show方法之前,我们还需要使用pack方法将Frame中的内容做一个整合。请记住这里的使用方法。4 GridBag布局实例说明到现在为止,我们已经学习了边框布局、网格布局以及组合布局,现在大家试一试编写一个程序,怎么样,挺有难度的吧!完成这个GUI得花很多心思去设计组合,十分讨厌,下面我们就使用一个新的布局管理器GridBagLayout来解决这种难题。首先,输入以下源程序:源程序:testGridBag.javaimport java.awt.*;import javax.swing.*;import java.applet.Applet;public class testGridBag extends JApplet{public void init(){ JPanel panel1=(JPanel)getContentPane();panel1.setLayout(new GridBagLayout());GridBagConstraints gbdc=new GridBagConstraints();gbdc.fill=GridBagConstraints.BOTH;gbdc.weightx=1;gbdc.weighty=1;panel1.add(new JButton("No.1"),gbdc);panel1.add(new JButton("No.2"),gbdc);panel1.add(new JButton("No.3"),gbdc);gbdc.gridwidth=2;gbdc.gridx=0;panel1.add(new JButton("No.4"),gbdc);gbdc.gridx=2;gbdc.gridwidth=1;gbdc.gridheight=2;panel1.add(new JButton("No.5"),gbdc);gbdc.gridx=0;gbdc.gridheight=1;panel1.add(new JButton("No.6"),gbdc);gbdc.gridx=1;panel1.add(new JButton("No.7"),gbdc);gbdc.gridx=0;gbdc.gridwidth=2;panel1.add(new JButton("No.8"),gbdc);gbdc.gridx=2;gbdc.gridwidth=1;panel1.add(new JButton("No.9"),gbdc);}}在这个程序中,我们使用了GridBagLayout轻松地完成了这个界面的设计,允分凸现出它的强大。可以这么说,GridBagLayout是Java语言中最强大的布局管理器。GridBagLayout,从名字上看,就知道它与GridLayout有一定的渊源,是的,GridBagLayout的确与其十分类似,也是使用网格来进行布局管理的。但与GridLayout(网格布局)不同的是,GridBagLayout不像网格布局一相,需要所有的部件的大小、形状相同。而且还可以将某一个部件放在一个固定的位置上。下面,我们一起来分析一下testGridBag.java程序。1) panel1.setLayout(new GridBagLayout());在调用setLayout方法时,指定为GridBagLaoyout,使panel1使用GridBag布局管理。2) GridBagConstraints gbdc=new GridBagConstraints();GridBagLayout布局管理器是通过一个GridBagConstraints类来实现神奇的效果的。所以,我们要在使用时先定义一个GridBagConstraints类的对象。在这个程序中,我们定义了一个GridBagConstraints类的对象gbdc。3) gbdc.fill=GridBagConstraints.BOTH;由于网格单元可能比该单元中的部件大,如果是这样,部件放置在单元格内会有一些多余空间。在默认情况下,部件不会扩张,也就是不会填充这个多余空间。GridBagConstraints提供了一个fill属性,我们可以通过设置它的值来起到不同的效果。¨ GridBagConstraints.NONE:不扩张,是默认值;¨ GridBagConstraints.HORIZONTAL:部件水平扩张,将水平方向的多余空间填满;¨ GridBagConstraints.VERTICAL:部件垂直扩张,将垂直方向的多余空间填满;¨ GridBagConstraints.BOTH:部件同时向两个方向扩张,将单元格填满。4) gbdc.weightx=1;gbdc.weighty=1;weightx和weighty是GridBagConstraints提供的另一对属性。它的取值是整型数,默认值为0。用来设置行(weightx)、列(weighty)的“重量”,如果值为0的话,所有的部件都会紧收在一起,聚集在中央,如图10-17所示。而如果取值为其它数字,则会根据值来分配空间。5) panel1.add(new JButton("No.1"),gbdc);panel1.add(new JButton("No.2"),gbdc);panel1.add(new JButton("No.3"),gbdc);在没有任何约束的时候,向gbdc中添加按钮,这时效果与采用网格布局的效果完全一样。一个接着一个地“占领”单元格。6) gbdc.gridwidth=2;gbdc.gridx=0;panel1.add(new JButton("No.4"),gbdc);由于第四个按钮(No.4)是宽度是2,在GridBagLayout中,是由gridwidth属性来控制添加进入的部件的宽度的。我们通过gbdc.gridwidth=2将其设置为2,这样,再添加进入的部件就会变成为2个单元格的宽度。另外,我们再使用gbdc.gridx=0让其另起一行,从最左边的单元格开始填充。因此,我们发现第四个按钮被加在了第二行,宽度为2个单元格。7) gbdc.gridx=2;gbdc.gridwidth=1;gbdc.gridheight=2;panel1.add(new JButton("No.5"),gbdc);接下来,我们要摆放第五个按钮,这个按钮将从第3个单元开始填充,其宽度为一个单元格,而高度则为两个单元格。因此,我们首先使用用gbdc.gridx=2,使得下一个添加的部件(第五个按钮)放入第3个单元格(0代表第1个单元格,因此第3个单元格应该是2)。由于,前面我们已经将gridwidth设置为2了,因此,我们需要使用gbdc.gridwidth=1,将其值设置回1。最后使用gdbc.gridheight=2,使得添入的部件的单元格纵向跨越两个单元格。8) gbdc.gridx=0;gbdc.gridheight=1;panel1.add(new JButton("No.6"),gbdc);我想这一段程序,大家应该都不会再有什么理解上的问题了吧!主要提醒大家注意的是,我们使用gbdc.gridheight=1将单元格纵向跨度改成了默认值1。这是因为我们在前面需要时将其改成了2,所以在此需要将其改回来。实例说明为了更好地理解这个强大的GridBagLayout布局管理器,我们再来做一个有趣的实验。首先,我们创建一个testGridBag2.java源程序:testGridBag2.javaimport java.awt.*;import javax.swing.*;import java.applet.Applet;public class testGridBag2 extends JApplet{public void init(){ JPanel panel1=(JPanel)getContentPane();panel1.setLayout(new GridBagLayout());GridBagConstraints gbdc=new GridBagConstraints();panel1.add(new JButton("No.1"),gbdc);panel1.add(new JButton("No.2"),gbdc);setSize(300,200);}}然后我们使用鼠标改变一下窗口的大小,看一下,这两个按钮有什么变化?你会惊奇地发现,窗口改变了大小,两个按钮的大小却没有变,而且一直呆在正中央的位置。一些说明:在这个程序中,我们使用了一个以前没有用过的语句:setsize(300.200),它的功能是在程序中设置窗口的大小。现在我们对这个程序做一些修改!将添加两个按钮的两条语句:panel1.add(new JButton("No.1"),gbdc);panel1.add(new JButton("No.2"),gbdc);将它们扩展为:gbdc.weightx=1;panel1.add(new JButton("No.1"),gbdc);gbdc.weightx=3;panel1.add(new JButton("No.2"),gbdc);为什么会得到这个效果呢?我们在程序中添加按钮的程序段前加入一句:gbdc.fill=GridBagConstraints.HORIZONTAL;再重新编译一下程序,再看看程序的输出有什么变化!在得到结果之前,自己可以想象一下结果,然后看一下程序的实际输出与你的想法是否相吻合。我们惊奇地发现,第二个按钮,突然变得十分宽起来(如图10-20所示)。这是因为放置第二个按钮的单元格的宽度是3,而第一个按钮的宽度是1。而且,我们又让第二个按钮横向扩展,因此得到了这样的输出结果。相信实验做到这里,不须我说,大家也会有一些心得体会了。但是GridBagLayout远不止这一点,大家应该多做试验,才能够在真实的使用环境中有效地掌握GridBagLayout。

Java GUI中有哪几种常用的布局方式,各有什么特点

Java GUI中有哪几种常用的布局方式,各有什么特点?

FlowLayout流式布局 BorderLayout边界布局 GridLayout网格布局 CardLayout卡片布局 GridBagLayout网路包布局

java 的布局方式有什么特点

布局?Java GUI布局吧?

AWT/Swing/SWT三种.

AWT 概述

Abstract Windows Toolkit(AWT)是最原始的 Java GUI 工具包。AWT 的主要优点是,它在 Java 技术的每个版本上都成为了一种标准配置,包括早期的 Web 浏览器中的 Java 实现;另外它也非常稳定。这意味着我们不需要单独安装这个工具包,在任何一个 Java 执行环境中都可以使用它,这一点正是我们所希望的特性。

AWT 是一个非常简单的具有有限 GUI 元件、布局管理器和事件的工具包(参见 清单 1、清单 2 和 清单 3)。这是因为 Sun 公司决定为 AWT 使用一种最小公分母(LCD)的方法。因此它只会使用为所有 Java 主机环境定义的 GUI 元件。最终的结果非常不幸,有些经常使用的元件,例如表、树、进度条等,都不支援。对于需要更多元件型别的应用程式来说,我们需要从头开始建立这些元件。这是一个很大的负担。

Swing 概述

Java Swing 是 Java Foundation Classes(JFC)的一部分,它是试图解决 AWT 缺点的一个尝试。在 Swing 中,Sun 开发了一个经过仔细设计的、灵活而强大的 GUI 工具包。不幸的是,这意味着我们又要花一些时间来学习 Swing 了,对于常见的情况来说,Swing 有些太复杂了。

Swing 是在 AWT 元件基础上构建的。所有 Swing 元件实际上也是 AWT 的一部分。Swing 使用了 AWT 的事件模型和支援类,例如 Colors、Images 和 Graphics。Swing 元件、布局管理器以及事件总结如下(参见 清单 4、清单 5 和 清单 6)。正如您可以看到的一样,这些元件集比 AWT 提供的元件集更为广泛,与 SWT 元件集相比也毫不逊色。

SWT 概述

与 AWT 的概念相比,SWT 是一个低阶的 GUI 工具包。JFace 是一组用来简化使用 SWT 构建 GUI 的增强元件和工具服务。SWT 的构建者从 AWT 和 Swing 实现中学习了很多经验,他们试图构建一个集二者优点于一体而没有二者的缺点的系统。从很多方面来说,他们已经成功了。

SWT 也是基于一个对等体实现的,在这一点上它与 AWT 非常类似。它克服了 AWT 所面临的 LCD 的问题,方法如下:定义了一组控制元件,它们可以用来构建大部分办公应用程式或开发者工具,然后可以按照逐个主机的原则,为特定主机所没有提供的控制元件建立模拟控制元件(这与 Swing 类似)。对于大部分现代主机来说,几乎所有的控制元件都是基于本地对等体的。这意味着基于 SWT 的 GUI 既具有主机外观,又具有主机的效能。这样就避免了使用 AWT 和 Swing 而引起的大部分问题。特定的主机具有一些低阶功能控制元件,因此 SWT 提供了扩充(通常是模拟的)版本(通常使用 “C” 作为名字中的第一个字母),从而可以产生更一致的行为。

发动机的布局方式有哪几种,各有什么优势

发动机布局方式 前置前驱 一般中低轿车用 部分抵挡跑车 前置后驱 一般中高档轿车用 部分中低档跑车 前置全驱 一般高阶豪华车用 部分跑车 中置后驱 一般高档高阶豪华跑车用 F1 中置全驱 一般高档高阶豪华跑车用 后置后驱 一般大型客车用 保时捷高阶高档豪华跑车 后置全驱 保时捷高阶高档豪华跑车 发动机 排列方式 直列 L型 一般用于四缸发动机 少数六缸发动机 像宝马 V型发动机 一般六缸以上发动机用 W型发动机 一般12缸以上发动机用 比如大众途锐 奥迪A8 布加迪 H型发动机 一般跑车用 比如保时捷 斯巴鲁

java swing 布局方式有哪几种

BorderLayout, BoxLayout, CardLayout, DefaultMenuLayout, FlowLayout, GridBagLayout, GridLayout, GroupLayout swing里常用的也有这些,至于每个具体的功能自己查一下API就可以了。

常用的离合器有哪几种?各有什么特点?

一、变极对数调速方法 这种调速方法是用改变定子绕组的接红方式来改变笼型电动机定子极对数达到调速目的,特点如下: 1、具有较硬的机械特性,稳定性良好; 2、无转差损耗,效率高; 3、接线简单、控制方便、价格低; 4、有级调速,级差较大,不能获得平滑调速; 5、可以与调压调速、电磁转差离合器配合使用,获得较高效率的平滑调速特性。 本方法适用于不需要无级调速的生产机械,如金属切削机床、升降机、起重装置、风机、水泵等。 二、变频调速方法 变频调速是改变电动机定子电源的频率,从而改变其同步转速的调速方法。变频调速系统主要装置是提供变频电源的变频器,变频器可分成交流-直流-交流变频器和交流-交流变频器两大类,目前国内大都使用交-直-交变频器。其特点: 1、效率高,调速过程中没有附加损耗; 2、应用范围广,可用于笼型非同步电动机; 3、调速范围大,特性硬,精度高; 4、技术复杂,造价高,维护检修困难。 5、本方法适用于要求精度高、调速效能较好场合。 三、串级调速方法 串级调速是指绕线式电动机转子回路中串入可调节的附加电势来改变电动机的转差,达到调速的目的。大部分转差功率被串入的附加电势所吸收,再利用产生附加的装置,把吸收的转差功率返回电网或转换能量加以利用。根据转差功率吸收利用方式,串级调速可分为电机串级调速、机械串级调速及闸流体串级调速形式,多采用闸流体串级调速,其特点为: 1、可将调速过程中的转差损耗回馈到电网或生产机械上,效率较高; 2、装置容量与调速范围成正比,投资省,适用于调速范围在额定转速70%-90%的生产机械上; 3、调速装置故障时可以切换至全速执行,避免停产; 4、闸流体串级调速功率因数偏低,谐波影响较大。 5、本方法适合于风机、水泵及轧钢机、矿井提升机、挤压机上使用。 四、绕线式电动机转子串电阻调速方法 绕线式非同步电动机转子串入附加电阻,使电动机的转差率加大,电动机在较低的转速下执行。串入的电阻越大,电动机的转速越低。此方法装置简单,控制方便,但转差功率以发热的形式消耗在电阻上。属有级调速,机械特性较软。 五、定子调压调速方法 当改变电动机的定子电压时,可以得到一组不同的机械特性曲线,从而获得不同转速。由于电动机的转矩与电压平方成正比,因此最大转矩下降很多,其调速范围较小,使一般笼型电动机难以应用。为了扩大调速范围,调压调速应采用转子电阻值大的笼型电动机,如专供调压调速用的力矩电动机,或者在绕线式电动机上串联频敏电阻。为了扩大稳定执行范围,当调速在2:1以上的场合应采用反馈控制以达到自动调节转速目的。 调压调速的主要装置是一个能提供电压变化的电源,目前常用的调压方式有串联饱和电抗器、自耦变压器以及闸流体调压等几种。闸流体调压方式为最佳。调压调速的特点: 1、调压调速线路简单,易实现自动控制; 2、调压过程中转差功率以发热形式消耗在转子电阻中,效率较低。 3、调压调速一般适用于100KW以下的生产机械。 六、电磁调速电动机调速方法 电磁调速电动机由笼型电动机、电磁转差离合器和直流励磁电源(控制器)三部分组成。直流励磁电源功率较小,通常由单相半波或全波闸流体整流器组成,改变闸流体的导通角,可以改变励磁电流的大小。 电磁转差离合器由电枢、磁极和励磁绕组三部分组成。电枢和后者没有机械联络,都能自由转动。电枢与电动机转子同轴联接称主动部分,由电动机带动;磁极用联轴节与负载轴对接称从动部分。当电枢与磁极均为静止时,如励磁绕组通以直流,则沿气隙圆周表面将形成若干对N、S极 *** 替的磁极,其磁通经过电枢。当电枢随拖动电动机旋转时,由于电枢与磁极间相对运动,因而使电枢感应产生涡流,此涡流与磁通相互作用产生转矩,带动有磁极的转子按同一方向旋转,但其转速恒低于电枢的转速N1,这是一种转差调速方式,变动转差离合器的直流励磁电流,便可改变离合器的输出转矩和转速。电磁调速电动机的调速特点: 1、装置结构及控制线路简单、执行可靠、维修方便; 2、调速平滑、无级调速; 3、对电网无谐影响; 4、速度失大、效率低。 5、本方法适用于中、小功率,要求平滑动、短时低速执行的生产机械。 七、液力耦合器调速方法 液力耦合器是一种液力传动装置,一般由泵轮和涡轮组成,它们统称工作轮,放在密封壳体中。壳中充入一定量的工作液体,当泵轮在原动机带动下旋转时,处于其中的液体受叶片推动而旋转,在离心力作用下沿着泵轮外环进入涡轮时,就在同一转向上给涡轮叶片以推力,使其带动生产机械运转。液力耦合器的动力转输能力与壳内相对充液量的大小是一致的。在工作过程中,改变充液率就可以改变耦合器的涡轮转速,作到无级调速,其特点为: 1、功率适应范围大,可满足从几十千瓦至数千千瓦不同功率的需要; 2、结构简单,工作可靠,使用及维修方便,且造价低; 3、尺寸小,能容大; 4、控制调节方便,容易实现自动控制。 5、本方法适用于风机、水泵的调速。

电气简图连线线的布局方式有哪几种?

⑴、水平布置:将装置和元件按行布置,使得其连线线一般成水平布置。 ⑵、垂直布置:将装置或元件按列排列,连线线成垂直布置。 ⑶、交叉布置:将相应的元件连线成对称的布局。

常用的Inter接入方案有哪几种? 各有什么特点

电话拨号接入 传输介质 : 电话线终端 上行速率 : 512k—640k 下行数率 : 512k-1M 价格水平 : 非常便宜(48元包月) 适用场合 : 个人 稳定性 : 非常不稳定 提供商 : 中国移动、中国联通 ISDN拨号 传输介质 :网路水晶线 上行速率 :640k-2M 下行数率 :1M-2M 价格水平 :便宜(70元左右) 适用场合 :对网路要求不高的个人 稳定性 :趋于稳定 提供商 :中国网通、中国电信、中国铁通 租用线路(DDN专线接入) 传输介质 : MODEM 上行速率 : 1M-10M 下行数率 : 640k 价格水平 : 偏贵(80元包月左右) 适用场合 : 公司、个人上网 稳定性 : 非常稳定 提供商 : 中国铁通 区域网接入 传输介质 : 伺服器 上行速率 : 512k-1M 下行数率 : 640k-2M 价格水平 : 偏贵(90元左右) 适用场合 : 办公室 稳定性 : 不太稳定 提供商 : 中国移动、中国联通、中国网通、中国电信 无线接入 传输介质 :无线网络卡 上行速率 :1M-5M 下行数率 :512k-1M 价格水平 :贵(120元左右包月) 适用场合 :经常出差或者旅游的个人 稳定性 : 不稳定 提供商 : 暂无 Cable Modem接入 传输介质 :MODEM服务端 上行速率 :10M 下行数率 :1M 价格水平 :便宜 适用场合 :公司、家庭 稳定性 :非常稳定 提供商 :中国网通、中国电信、中国移动、中国联通 光纤接入 传输介质 :光纤电缆 上行速率 :10M-100M 下行数率 :10M 价格水平 :非常贵 适用场合 :IDC/对网路要求极高的人群等稳定性 :最稳定了 提供商 :美国、日本提供商

换流方式有哪几种,各有什么特点?

换流就是电流从一条支路换向另一支路的过程. 换流方式有4种. 器件换流,利用全控器件的自关断能力进行换流.全控型器件采用此换流方式. 电网换流,由电网提供换流电压,只要把负的电网电压加到欲关断的器件上即可. 负载换流,由负载提供换流电压,当负载为电容性负载即负载电流超前于负载电压时,可实现负载换流. 强迫换流,设定附加换流电路,给欲关断的闸流体施加反向电压换流称为强迫换流.通常是利用附加电容上的能量实现的,也称电容换流.

用JAVA网格布局写一个简单的计算器

无聊写了个,修复了下Bug:

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JTextField; public class Calculate extends JFrame implements ActionListener {     private static final long serialVersionUID = 1L;     private JButton plus, reduce, multiply, divice, reset;    private JTextField one, two, result;    private boolean device_falg = false;     private final int width = 400, height = 300;     public Calculate() {        super("修改密码");        this.setLayout(null);        this.setSize(width, height);        init();        Layout();    }     public void init() {        plus = new JButton("加   ");        reduce = new JButton("减    ");        multiply = new JButton("乘   ");        divice = new JButton("除    ");        reset = new JButton("清空");        one = new JTextField();        two = new JTextField();        result = new JTextField();    }     public void Layout() {        this.add(new JLabel("第一个数")).setBounds(20, 10, 60, 80);        this.add(one).setBounds(100, 38, 100, 25);        this.add(new JLabel("第二个数")).setBounds(20, 40, 60, 80);        this.add(two).setBounds(100, 70, 100, 25);        this.add(new JLabel("结果")).setBounds(20, 85, 60, 80);        this.add(result).setBounds(100, 110, 100, 25);         this.add(plus).setBounds(70, 170, 80, 25);        this.add(reduce).setBounds(200, 170, 80, 25);        this.add(multiply).setBounds(70, 200, 80, 25);        this.add(divice).setBounds(200, 200, 80, 25);         this.add(reset).setBounds(300, 220, 80, 25);         plus.addActionListener(this);        reduce.addActionListener(this);        multiply.addActionListener(this);        divice.addActionListener(this);        reset.addActionListener(this);         this.setVisible(true);        this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);    }     public boolean Format() {        boolean FLAG = false;        boolean flag = false;        String one = this.one.getText().toString().trim();        String two = this.two.getText().toString().trim();         if (one == null || one.equals("") || two == null || two.equals("")) {            JOptionPane.showMessageDialog(getParent(), "请输入完整信息!");            FLAG = false;            flag = true;        }         boolean boll_1 = one.matches(" args) {        new Calculate();    }}

Java中setLayout网格布局如何让两行或多行合并

你把frame.setVisible(true);这一句移到最后一句,就象这样:12345678910111213141516import java.awt.GridLayout;import javax.swing.JButton;import javax.swing.JFrame;public class Test9 { public static void main(String args) { JFrame frame = new JFrame(); frame.setSize(640, 480); GridLayout grid = new GridLayout(GlobalConfig.ROW,GlobalConfig.COLUMN); frame.setLayout(grid); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); for (int i = 0; i 《 81; i++) { frame.add(new JButton("" + i)); } frame.setVisible(true); //这一句移到这里 }}就能正常显示了.

Java的AWT包与Swing包提供了那些布局管理器

布局管理器分为6种:FlowLayout 流式布局管理器GridLayout 网格布局管理器GridBagLayout 网格包布局管理器BorderLayout 边界布局管理器CardLayout 卡片布局管理器BoxLayout这个是Swing与AWT新增加的。

JAVA边框布局,网格布局如何设置与窗体之间有间隙,要求具体做法!

import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.event.MouseMotionAdapter;import javax.swing.JFrame; public class test extends JFrame{ private int xx, yy; private boolean isDraging = false; public test(){ setUndecorated(true); // 没有标题栏 setSize(200, 200); setVisible(true); this.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { isDraging = true; xx = e.getX(); yy = e.getY(); } public void mouseReleased(MouseEvent e) { isDraging = false; } }); this.addMouseMotionListener(new MouseMotionAdapter() { public void mouseDragged(MouseEvent e) { if (isDraging) { int left = getLocation().x; int top = getLocation().y; setLocation(left + e.getX() - xx, top + e.getY() - yy); } } }); } public static void main(String args) { test t =new test(); t.setDefaultCloseOperation(3);}}

OK,关于java swing 网格布局和GridLayout中如何设置一个按钮占两个位置,就像我截图的那样的内容到此结束了,希望对大家有所帮助。

java swing 网格布局(GridLayout中如何设置一个按钮占两个位置,就像我截图的那样)

本文编辑:admin

更多文章:


matlab编程需要什么语言(matlab非线性系统仿真需要写c语言吗)

matlab编程需要什么语言(matlab非线性系统仿真需要写c语言吗)

各位老铁们好,相信很多人对matlab编程需要什么语言都不是特别的了解,因此呢,今天就来为大家分享下关于matlab编程需要什么语言以及matlab非线性系统仿真需要写c语言吗的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看

2024年7月30日 16:55

javascript程序设计第三版(javascript从入门到精通第3版怎么样)

javascript程序设计第三版(javascript从入门到精通第3版怎么样)

本文目录javascript从入门到精通第3版怎么样《JavaScript高级程序设计》什么时候出版javascript高级程序设计第2版和第3版的区别javascript从入门到精通第3版怎么样不知道你是入门者还是需要进修。JavaScr

2024年7月15日 08:28

guss英语什么意思?gussy up什么意思及同义词

guss英语什么意思?gussy up什么意思及同义词

大家好,关于gussy很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于guss英语什么意思的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!本文目录guss英语什

2024年8月19日 18:15

python网站开发实例教程(怎么用python进行web开发)

python网站开发实例教程(怎么用python进行web开发)

各位老铁们,大家好,今天由我来为大家分享python网站开发实例教程,以及怎么用python进行web开发的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本

2024年10月20日 13:15

接码网站免费(验证码接收平台有哪些)

接码网站免费(验证码接收平台有哪些)

本文目录验证码接收平台有哪些y码验证码接收平台网址是多少了求推荐几款好的短信验证码接收平台有什么好的短信验证码接收平台,可以推荐免费接码验证码接收平台求2019-2020国内免费验证码接收平台验证码接收平台有哪些回答现在短信验证码认证已经是

2024年7月23日 06:23

开源网站存在的问题有哪些?如何进行网站的开源软件资产管理

开源网站存在的问题有哪些?如何进行网站的开源软件资产管理

本文目录开源网站存在的问题有哪些如何进行网站的开源软件资产管理网站的开源程序都是什么和网站的程序有什么区别怎么判断一个网站是不是开源代码啊开源网站存在的问题有哪些和以前相比的话,现在制作一个网站要简单方便很多了。因为网络上有很多的模板网站,

2024年7月23日 21:57

小时代人物关系图解(电影小时代的人物关系)

小时代人物关系图解(电影小时代的人物关系)

这篇文章给大家聊聊关于小时代人物关系图解,以及电影小时代的人物关系对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录电影小时代的人物关系小时代的人物有什么关系看过小时代123的进来,理解下里面的人物关系谁能告诉我《小时代》的全部

2024年8月29日 00:55

小程序开发制作定制服务平台(App小程序开发定制开发与SaaS服务平台该如何选择)

小程序开发制作定制服务平台(App小程序开发定制开发与SaaS服务平台该如何选择)

各位老铁们,大家好,今天由我来为大家分享小程序开发制作定制服务平台,以及App小程序开发定制开发与SaaS服务平台该如何选择的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,

2024年7月15日 00:30

flutter怎么读音发音(flutter怎么读)

flutter怎么读音发音(flutter怎么读)

大家好,今天小编来为大家解答以下的问题,关于flutter怎么读音发音,flutter怎么读这个很多人还不知道,现在让我们一起来看看吧!本文目录flutter怎么读fluttering怎么读与e发音相同的字母有哪些飞用英语怎么说fluter

2024年8月18日 18:35

ospf协议配置实验心得(OSPF动态路由协议配置 实验报告)

ospf协议配置实验心得(OSPF动态路由协议配置 实验报告)

本文目录OSPF动态路由协议配置 实验报告交换机/路由器实训心得体会cisco的配置不懂!是关于ospf协议的!!请各位大神帮帮忙~~~~~~~~~~~~~!ospf实训报告总结语ospf的作用和配置OSPF动态路由协议配置 实验报告Rou

2024年7月18日 08:35

username must be unique(the user name must be unique是什么意思)

username must be unique(the user name must be unique是什么意思)

本文目录the user name must be unique是什么意思username中文意思navicat for mysql怎样为属性添加唯一性id=wih1001是什么意思php在Linux环境下报了MYSQL错误the user

2024年6月29日 09:27

链表c语言next date(数据结构c语言版链表问题)

链表c语言next date(数据结构c语言版链表问题)

大家好,链表c语言next date相信很多的网友都不是很明白,包括数据结构c语言版链表问题也是一样,不过没有关系,接下来就来为大家分享关于链表c语言next date和数据结构c语言版链表问题的一些知识点,大家可以关注收藏,免得下次来找不

2024年8月14日 10:30

be based on(base on 和be based on的区别是什么)

be based on(base on 和be based on的区别是什么)

本文目录base on 和be based on的区别是什么“base on”和“be based on”的区别是什么base on可以放句首吗based on和be based on的区别base on be based on如何

2024年7月18日 05:43

求解:db2 length函数疑问?db2中对原有的表添加新的一列!

求解:db2 length函数疑问?db2中对原有的表添加新的一列!

本文目录求解:db2 length函数疑问db2中对原有的表添加新的一列!winrar64位如何破解我是在他的官网下载的求解:db2 length函数疑问你的编码是多少???不同编码取的长度不一样的.. 官网溜达了下..db2 9版本后的说

2024年7月11日 23:49

新手笔记本电脑入门基础知识(怎样学习电脑基础知识)

新手笔记本电脑入门基础知识(怎样学习电脑基础知识)

本文目录怎样学习电脑基础知识电脑初学者入门教程新手如何购买笔记本电脑,求入门指导笔记本电脑新手入门电脑的基本操作知识怎样学习电脑基础知识学习电脑之前,最好自己能够先列一个表,记录下自己要学什么,一步一步制定计划,购买书籍,找学习视频,不要盲

2024年1月3日 07:20

教程之家会计(浙江会计之家)

教程之家会计(浙江会计之家)

本文目录浙江会计之家金蝶财务软件的现金流量表是怎样出的设置的开封会计之家培训机构怎么样会计自学入门教程有哪些会计之家是什么重庆会计之家是什么会计之家信息登记关闭怎么办天津会计之家浙江会计之家浙江会计之家官网→浙江会计之家报名参加会计专业技术

2024年7月8日 20:02

domcontentloaded和load的区别(document.ready事件和document.load事件的区别)

domcontentloaded和load的区别(document.ready事件和document.load事件的区别)

本篇文章给大家谈谈domcontentloaded和load的区别,以及document.ready事件和document.load事件的区别对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助

2024年9月3日 04:15

shell脚本实现功能(这段shell脚本实现的是什么功能)

shell脚本实现功能(这段shell脚本实现的是什么功能)

本文目录这段shell脚本实现的是什么功能设计一个shell脚本程序,要求有如下功能: 实现自动备份功能和清理备份等编写Shell脚本---接受、判断用户参数编写一个shell脚本 ,实现功能:从键盘输入数字,和脚本生成的数字对比,如果一致

2024年7月2日 13:32

ps切图怎么设置像素(PS怎么修改图片像素)

ps切图怎么设置像素(PS怎么修改图片像素)

各位老铁们好,相信很多人对ps切图怎么设置像素都不是特别的了解,因此呢,今天就来为大家分享下关于ps切图怎么设置像素以及PS怎么修改图片像素的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录PS怎么修改图片像素ps

2024年8月27日 10:10

oracle19c和11g的兼容性(Oracle列转行函数vm_concat在19C版本不兼容解决方案)

oracle19c和11g的兼容性(Oracle列转行函数vm_concat在19C版本不兼容解决方案)

“oracle19c和11g的兼容性”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看oracle19c和11g的兼容性(Oracle列转行函数vm_concat在19C版本不兼容解决方案)!本文目录Oracle列转行函数vm

2024年7月5日 04:46

近期文章

本站热文

iphone vpn设置(ios设置vpn快捷开关)
2024-07-22 15:01:12 浏览:2342
windows12正式版下载(操作系统Windows Server 2012 R2,在哪能下载到,公司用的)
2024-07-20 17:26:53 浏览:1735
client mfc application未响应(每次进cf就提示client MFC Application未响应该怎么办啊!急急急)
2024-07-20 11:15:58 浏览:1168
java安装教程(win10如何安装JAVA)
2024-07-19 19:55:49 浏览:1164
标签列表

热门搜索