美文网首页
项目Swing问题记录

项目Swing问题记录

作者: 叶相依 | 来源:发表于2021-02-07 09:58 被阅读0次

    1、Swing的基本概念是什么?

    答:Swing是java中的GUI工具包。是为解决AWT存在的问题而新开发的图形界面包,包括了图形用户界面(GUI)器件如:文本框,按钮,分隔窗格和表。Swing是对AWT的改良和扩展。

    2、AWT和Swing之间的区别是什么?

    答:(1)AWT是基于本地方法的C/C++程序,其运行速度比较快;Swing是基于AWT的java程序,其运行速度比较慢;(2)AWT的控件在不同的平台可能表现不同,而Swing在所有平台表现一致。

    3、哪些Swing的方法是线程安全的?

    答:只有3个线程安全的方法:repaint()、 revalidate()、and invalidate()。

    4、Swing容器分类有什么?

    答:常见的窗口就是一种容器。容器本身也是一种组件,它的作用就是用来组织、管理和显示其他组件。Swing中容器可以分为两类:顶层容器和中间容器。

    顶层容器是任何图形界面程序都要涉及的主窗口,是显示并承载组件的容器组件,在Swing中有三种可以使用的顶层容器,分别是JFrame、JDialog和JApplet。

    中间容器是容器组件的一种,也可以承载其他组件,但中间容器不能独立显示,必须依附于其他的顶层容器。常见的中间容器有JPanel、JScrollPane、JTabbedPane和JToolBar。

      5.JTextField类提供的GUI功能是?

    答:文本字段

     6.将GUI窗口划分为东、西、南、北、中五个部分的布局管理器是:

    答:BorderLayout

    7在Swing GUI编程中,setDefaultCloseOperation(JFrame.EXIT_ON_

    CLOSE)语句的作用是:

    答:当执行关闭窗口操作时,退出应用程序

    8.下列哪些是Swing容器的顶层容器?多选

    A. JPanel

    B. JScrollPane

    C. JWindow

    D.JFrame

    答:CD

    9.假设有一个面板PanelOne,它的布局管理方式是BorderLayt。它的背景颜色被显式地设为黑色而前景颜色被显式地设为白色。有另一个面板PanelTwo,它的布局管理方式是FlowLayout,被添加到PanelOne的center区域,PanelTwo的前景颜色是红色,没有背景颜色被指定。一个带有文字的Label被添加到PanelTwo上,Label没有设置颜色.

    最终9.Label的文字颜色

    10.PanelTwo的背景颜色

    答:9. Label的文字是红色,10.  PanelTwo是黑色背景

    11   .界面设计中我们希望实现一个对话框,该对话框上有5个垂直方向排列的大小  一致的按钮,这些按钮要充满对话框的空余空间,并且当对话框改变大小的时候按钮也要跟着改变大小,同时保证大小一致。那么对话框应该选择哪种布局方式?

    答:GridLayout

     11.如何实现自适应大小铺满面板的背景图片方法?

    答案:三种方法,一种是父容器Border布局,子面板直接自适应父容器大小。并在子面板上画出背景图片

    第二种是监听窗体大小改变事件,让JLabel设置背景图片

    12.组件的getBounds()方法返回值的类型是?

    答案:Rectangle

    13.setPreferredSize和setSize的区别

    答:setSize()是你手动来设置组件的大小

    Dimension 类封装单个对象中组件的宽度和高度(精确到整数)。该类与组件的某个属性关联。由 Component 类和 LayoutManager 接口定义的一些方法将返回 Dimension 对象 setPreferredSize设置此组件的首选大小一般会选用setPreferredSize

    14.如何设置图片大小

    答:ImageIcon backgroundIcon = newImageIcon(imagePath));

    backgroundIcon.setImage(backgroundIcon.getImage().getScaledInstance(width,height,Image.SCALE_DEFAULT));

    JLabel.setIcon(backgroundIcon);

    15.若在窗体中添加一个面板,如何提升这个面板的层级?

    答:getRootPane().getLayeredPane().add(topPanel,JLayeredPane.POPUP_LAYER + 50);

    16.滚动面板如何添加视口

    setViewportView

    17.若有多个控件添加同种监听事件,请说出至少两种避免代码冗余的方案

    答案:1.添加内部类,内部类继承该监听事件类型。直接添加该类即可

    2.若希望触发的事件不同,则可以将事件类型实例化在外部。添加这个事件即可

    3.将监听触发后的事件封装在外面。4.合理皆可

    18. JOptionPane.showConfirmDialog();返回值是什么类型?

    答:int类型数值

    19. JOptionPane.showConfirmDialog()不同返回值的意义?

    答:以按钮顺序,第一个按钮返回值为0,一般为确认。依次往下排列

    20.如何获得鼠标点击控件的父控件?

    答案:e.getParent();

    21.能否在监听事件中使用判断线程状态的getState方法?为什么?

    答:不能,因为监听事件本身就是一个线程,并且加锁。所以在监听事件内判断外部线程的状态只能获得等待。

    22.监听事件中的this指向的是所在的类,还是监听事件?

    答:指向监听事件类本身,所以如果是在监听事件中想要控制本类继承的控件,则需要在外声明本类的that = this

    若将一个控件在全局声明,而实例化放在方法内部,现在循环遍历实例化并将该控件加载到面板上。

    23最终结果会加载几个控件?

    答案:加载多个控件,for循环几次就加载几个。

    24.现在在for循环外部对控件添加监听。结果是什么?

    答:只能监听到最后一个控件。

    25.若控件使用repaint()和revalidate()方法皆不能使得控件刷新,这时候还有什么办法可以使得重新加载窗体中的控件?

    答:可以控制窗体大小,当resize窗体大小时,整个窗体中的控件都会被刷新。

    代码可以使用setSize(getWidth()+1,getHeight()+1);

    setSize(getWidth()-1,getHeight()-1);

    相关文章

      网友评论

          本文标题:项目Swing问题记录

          本文链接:https://www.haomeiwen.com/subject/nltztltx.html