二、土石方工程專業(yè)承包企業(yè)資質(zhì)等級_第1頁
二、土石方工程專業(yè)承包企業(yè)資質(zhì)等級_第2頁
二、土石方工程專業(yè)承包企業(yè)資質(zhì)等級_第3頁
二、土石方工程專業(yè)承包企業(yè)資質(zhì)等級_第4頁
二、土石方工程專業(yè)承包企業(yè)資質(zhì)等級_第5頁
已閱讀5頁,還剩87頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、Chapter 13 GUI Basics1MotivationsThe design of the API for Java GUI programming is an excellent example of how the object-oriented principle is applied. In the chapters that follow, you will learn the framework of Java GUI API and use the GUI components to develop user-friendly interfaces for applic

2、ations and applets.2Creating GUI Objects/ Create a button with text OK JButton jbtOK = new JButton(OK); / Create a label with text Enter your name: JLabel jlblName = new JLabel(Enter your name: ); / Create a text field with text Type Name HereJTextField jtfName = new JTextField(Type Name Here); / Cr

3、eate a check box with text boldJCheckBox jchkBold = new JCheckBox(Bold); / Create a radio button with text redJRadioButton jrbRed = new JRadioButton(Red); / Create a combo box with choices red, green, and blueJComboBox jcboColor = new JComboBox(new StringRed, Green, Blue); ButtonLabelText fieldCheck

4、 BoxRadio ButtonCombo Box3Swing vs. AWTSo why do the GUI component classes have a prefix J? Instead of JButton, why not name it simply Button? In fact, there is a class already named Button in the java.awt package.When Java was introduced, the GUI classes were bundled in a library known as the Abstr

5、act Windows Toolkit (AWT). For every platform on which Java runs, the AWT components are automatically mapped to the platform-specific components through their respective agents, known as peers. AWT is fine for developing simple graphical user interfaces, but not for developing comprehensive GUI pro

6、jects. Besides, AWT is prone to platform-specific bugs because its peer-based approach relies heavily on the underlying platform. With the release of Java 2, the AWT user-interface components were replaced by a more robust, versatile, and flexible library known as Swing components. Swing components

7、are painted directly on canvases using Java code, except for components that are subclasses of or , which must be drawn using native GUI on a specific platform. Swing components are less dependent on the target platform and use less of the native GUI resource. For this reason, Swing components that

8、dont rely on native GUI are referred to as lightweight components, and AWT components are referred to as heavyweight components. 4Container ClassesContainer classes can contain other GUI components.5The helper classes are not subclasses of Component. They are used to describe the properties of GUI c

9、omponents such as graphics context, colors, fonts, and dimension.GUI Helper Classes6Swing GUI Components 7Components Covered in the Comprehensive Version8AWT (Optional)9FramesFrame is a window that is not contained inside another window. Frame is the basis to contain other user interface components

10、in Java GUI applications.The JFrame class can be used to create windows. For Swing GUI programs, use JFrame class to create widows.10Creating FramesRunimport javax.swing.*;public class MyFrame public static void main(String args) JFrame frame = new JFrame(Test Frame); frame.setSize(400, 300); frame.

11、setVisible(true); frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE); MyFrame11Adding Components into a Frame/ Add a button into the frameframe.getContentPane().add( new JButton(OK);RunMyFrameWithComponentsTitle barContent pane12Content Pane Delegation in JDK 1.5/ Add a button into the frameframe

12、.getContentPane().add( new JButton(OK);Title barContent pane/ Add a button into the frameframe.add( new JButton(OK);13JFrame Class14Layout ManagersJavas layout managers provide a level of abstraction to automatically map your user interface on all window systems. The UI components are placed in cont

13、ainers. Each container has a layout manager to arrange the UI components within the container. Layout managers are set in containers using the setLayout(LayoutManager) method in a container. 15FlowLayout ExampleWrite a program that adds three labels and text fields into the content pane of a frame w

14、ith a FlowLayout manager. ShowFlowLayoutRun16The FlowLayout Class17GridLayout ExampleRewrite the program in the preceding example using a GridLayout manager instead of a FlowLayout manager to display the labels and text fields.ShowGridLayoutRun18The GridLayout Class19The BorderLayout ManagerThe Bord

15、erLayout manager divides the container into five areas: East, South, West, North, and Center. Components are added to a BorderLayout by using the add method.add(Component, constraint), where constraint is BorderLayout.EAST, BorderLayout.SOUTH, BorderLayout.WEST, BorderLayout.NORTH, or BorderLayout.C

16、ENTER. 20BorderLayout ExampleShowBorderLayoutRun21The BorderLayout Class22The Color ClassYou can set colors for GUI components by using the class. Colors are made of red, green, and blue components, each of which is represented by a byte value that describes its intensity, ranging from 0 (darkest sh

17、ade) to 255 (lightest shade). This is known as the RGB model. Color c = new Color(r, g, b);r, g, and b specify a color by its red, green, and blue components. Example:Color c = new Color(228, 100, 255);23Standard ColorsThirteen standard colors (black, blue, cyan, darkGray, gray, green, lightGray, ma

18、genta, orange, pink, red, white, yellow) are defined as constants in . The standard color names are constants, but they are named as variables with lowercase for the first word and uppercase for the first letters of subsequent words. Thus the color names violate the Java naming convention. Since JDK

19、 1.4, you can also use the new constants: BLACK, BLUE, CYAN, DARK_GRAY, GRAY, GREEN, LIGHT_GRAY, MAGENTA, ORANGE, PINK, RED, WHITE, and YELLOW.24Setting ColorsYou can use the following methods to set the components background and foreground colors:setBackground(Color c) setForeground(Color c)Example

20、:jbt.setBackground(Color.yellow);jbt.setForeground(Color.red);25The Font ClassFont myFont = new Font(name, style, size);Example:Font myFont = new Font(SansSerif , Font.BOLD, 16);Font myFont = new Font(Serif, Font.BOLD+Font.ITALIC, 12);JButton jbtOK = new JButton(OK“);jbtOK.setFont(myFont);Font Names

21、Standard font names that are supported in all platforms are: SansSerif, Serif, Monospaced, Dialog, or DialogInput.Font StyleFont.PLAIN (0), Font.BOLD (1), Font.ITALIC (2), and Font.BOLD + Font.ITALIC (3)26Finding All Available Font NamesGraphicsEnvironment e = GraphicsEnvironment.getLocalGraphicsEnv

22、ironment();String fontnames = e.getAvailableFontFamilyNames();for (int i = 0; i fontnames.length; i+) System.out.println(fontnamesi);27Using Panels as Sub-ContainersPanels act as sub-containers for grouping user interface components. It is recommended that you place the user interface components in

23、panels and place the panels in a frame. You can also place panels in a panel. To add a component to JFrame, you actually add it to the content pane of JFrame. To add a component to a panel, you add it directly to the panel using the add method. 28Creating a JPanelYou can use new JPanel() to create a

24、 panel with a default FlowLayout manager or new JPanel(LayoutManager) to create a panel with the specified layout manager. Use the add(Component) method to add a component to the panel. For example,JPanel p = new JPanel();p.add(new JButton(OK);29Testing Panels ExampleThis example uses panels to orga

25、nize components. The program creates a user interface for a Microwave oven. TestPanelsRun30Common Features of Swing Components31BordersYou can set a border on any object of the JComponent class. Swing has several types of borders. To create a titled border, use new TitledBorder(String title). To cre

26、ate a line border, use new LineBorder(Color color, int width), where width specifies the thickness of the line. For example, the following code displays a titled border on a panel:JPanel panel = new JPanel();panel.setBorder(new TitleBorder(“My Panel);32Test Swing Common FeaturesComponent Propertiesf

27、ont backgroundforegroundpreferredSizeminimumSizemaximumSizeJComponent PropertiestoolTipTextborderTestSwingCommonFeaturesRun33Image IconsJava uses the class to represent an icon. An icon is a fixed-size picture; typically it is small and used to decorate components. Images are normally stored in imag

28、e files. You can use new ImageIcon(filename) to construct an image icon. For example, the following statement creates an icon from an image file us.gif in the image directory under the current class path: ImageIcon icon = new ImageIcon(image/us.gif);TestImageIconRun34Chapter 15 Event-Driven Programm

29、ing35Procedural vs. Event-Driven ProgrammingProcedural programming is executed in procedural order.In event-driven programming, code is executed upon activation of events. 36Revisit Listing 11.7Taste of Event-Driven ProgrammingThe example displays a button in the frame. A message is displayed on the

30、 console when a button is clicked. HandleEventRun37EventsAn event can be defined as a type of signal to the program that something has happened. The event is generated by external user actions such as mouse movements, mouse clicks, and keystrokes, or by the operating system, such as a timer.38Event

31、Classes39Event InformationAn event object contains whatever properties are pertinent to the event. You can identify the source object of the event using the getSource() instance method in the EventObject class. The subclasses of EventObject deal with special types of events, such as button actions,

32、window events, component events, mouse movements, and keystrokes. Table 15.1 lists external user actions, source objects, and event types generated.40Selected User ActionsSourceEvent TypeUser ActionObjectGeneratedClick a buttonJButtonActionEventClick a check boxJCheckBoxItemEvent, ActionEventClick a

33、 radio buttonJRadioButtonItemEvent, ActionEventPress return on a text fieldJTextFieldActionEventSelect a new itemJComboBoxItemEvent, ActionEventWindow opened, closed, etc.WindowWindowEvent Mouse pressed, released, etc.ComponentMouseEvent Key released, pressed, etc. ComponentKeyEvent 41The Delegation

34、 Model42Internal Function of a Source Component43The Delegation Model: ExampleJButton jbt = new JButton(OK);ActionListener listener = new OKListener();jbt.addActionListener(listener);44Selected Event Handlers Event ClassListener InterfaceListener Methods (Handlers)ActionEventActionListeneractionPerf

35、ormed(ActionEvent)ItemEventItemListeneritemStateChanged(ItemEvent)WindowEventWindowListenerwindowClosing(WindowEvent)windowOpened(WindowEvent)windowIconified(WindowEvent)windowDeiconified(WindowEvent)windowClosed(WindowEvent)windowActivated(WindowEvent)windowDeactivated(WindowEvent)ContainerEventCon

36、tainerListenercomponentAdded(ContainerEvent)componentRemoved(ContainerEvent) MouseEventMouseListenermousePressed(MouseEvent)mouseReleased(MouseEvent) mouseClicked(MouseEvent) mouseExited(MouseEvent) mouseEntered(MouseEvent)KeyEventKeyListenerkeyPressed(KeyEvent)keyReleased(KeyEvent) keyTypeed(KeyEve

37、nt)45SimpleEventDemoRun46Inner Class ListenersA listener class is designed specifically to create a listener object for a GUI component (e.g., a button). It will not be shared by other applications. So, it is appropriate to define the listener class inside the frame class as an inner class. 47Inner

38、ClassesInner class: A class is a member of another class.Advantages: In some applications, you can use an inner class to make programs simple.An inner class can reference the data and methods defined in the outer class in which it nests, so you do not need to pass the reference of the outer class to

39、 the constructor of the inner class.ShowInnerClass48Inner Classes, cont.49Inner Classes (cont.)Inner classes can make programs simple and concise. An inner class supports the work of its containing outer class and is compiled into a class named OuterClassName$InnerClassName.class. For example, the i

40、nner class InnerClass in OuterClass is compiled into OuterClass$InnerClass.class.50Revisiting SimpleEventDemo Using Inner ClassesSimpleEventDemoInnerClassRun51Anonymous Inner ClassesAn anonymous inner class must always extend a superclass or implement an interface, but it cannot have an explicit ext

41、ends or implements clause. An anonymous inner class must implement all the abstract methods in the superclass or in the interface. An anonymous inner class always uses the no-arg constructor from its superclass to create an instance. If an anonymous inner class implements an interface, the construct

42、or is Object().An anonymous inner class is compiled into a class named OuterClassName$n.class. For example, if the outer class Test has two anonymous inner classes, these two classes are compiled into Test$1.class and Test$2.class.52Anonymous Inner Classes (cont.)Inner class listeners can be shorten

43、ed using anonymous inner classes. An anonymous inner class is an inner class without a name. It combines declaring an inner class and creating an instance of the class in one step. An anonymous inner class is declared as follows:new SuperClassName/InterfaceName() / Implement or override methods in s

44、uperclass or interface / Other methods if necessary53Revising SimpleEventDemo Using Anonymous Inner ClassesAnonymousListenerClassRun54Example: Controlling BallsControlBallRunObjective: Use buttons to enlarge or shrink a ball. 55Example: Handling Window EventsTestWindowEventRunObjective: Demonstrate

45、handling the window events. Any subclass of the Window class can generate the following window events: window opened, closing, closed, activated, deactivated, iconified, and deiconified. This program creates a frame, listens to the window events, and displays a message to indicate the occurring even

46、t. 56MouseEvent57Handling Mouse EventsJava provides two listener interfaces, MouseListener and MouseMotionListener, to handle mouse events. The MouseListener listens for actions such as when the mouse is pressed, released, entered, exited, or clicked. The MouseMotionListener listens foractions such

47、as dragging or moving themouse. 58Handling Mouse Events59Example: Moving Message Using MouseObjective: Create a program to display a message in a panel. You can use the mouse to move the message. The message moves as the mouse drags and is always displayed at the mouse point. MoveMessageDemoRun60The

48、 Timer Class Some non-GUI components can fire events. The class is a source component that fires an ActionEvent at a predefined rate.The Timer class can be used to control animations. For example, you can use it to display a moving message.AnimationDemoRun61Chapter 16Creating User Interfaces62Motiva

49、tionsA graphical user interface (GUI) makes a system user-friendly and easy to use. Creating a GUI requires creativity and knowledge of how GUI components work. Since the GUI components in Java are very flexible and versatile, you can create a wide assortment of useful user interfaces.Previous chapt

50、ers briefly introduced several GUI components. This chapter introduces the frequently used GUI components in detail (see Figure 16.1). 63Components Covered in the ChapterIntroduces the frequently used GUI componentsUses borders and icons64ButtonsA button is a component that triggers an action event

51、when clicked. Swing provides regular buttons, toggle buttons, check box buttons, and radio buttons. The common features of these buttons are generalized in .65AbstractButton66JButtonJButton inherits AbstractButton and provides several constructors to create buttons.67JButton Properties (inherited)te

52、xticonmnemonichorizontalAlignmentverticalAlignmenthorizontalTextPositionverticalTextPositioniconTextGap68Example: Using ButtonsWrite a program that displays a message on a panel and uses two buttons, , to move the message on the panel to the left or right. RunButtonDemo69JCheckBoxJCheckBox inherits

53、all the properties such as text, icon, mnemonic, verticalAlignment, horizontalAlignment, horizontalTextPosition, verticalTextPosition, and selected from AbstractButton, and provides several constructors to create check boxes.70Example: Using Check BoxesAdd three check boxes named Centered, Bold, and

54、 Italic into Example 16.1 to let the user specify whether the message is centered, bold, or italic. CheckBoxDemoRunButtonDemoCheckBoxDemo71JRadioButtonRadio buttons are variations of check boxes. They are often used in the group, where only one button is checked at a time.72Grouping Radio ButtonsBut

55、tonGroup btg = new ButtonGroup();btg.add(jrb1);btg.add(jrb2);73Example: Using Radio ButtonsAdd three radio buttons named Red, Green, and Blue into the preceding example to let the user choose the color of the message.RunRadioButtonDemoButtonDemoCheckBoxDemoRadioButtonDemo74JLabelA label is a display

56、 area for a short text, an image, or both.75JLabel PropertiesJLabel inherits all the properties from JComponent and has many properties similar to the ones in JButton, such as text, icon, horizontalAlignment, verticalAlignment, horizontalTextPosition, verticalTextPosition, and iconTextGap. 76Using L

57、abels/ Create an image icon from image fileImageIcon icon = new ImageIcon(image/grapes.gif);/ Create a label with text, an icon, / with centered horizontal alignmentJLabel jlbl = new JLabel(Grapes, icon, SwingConstants.CENTER);/ Set labels text alignment and gap between text and iconjlbl.setHorizont

58、alTextPosition(SwingConstants.CENTER);jlbl.setVerticalTextPosition(SwingConstants.BOTTOM);jlbl.setIconTextGap(5);77JTextFieldA text field is an input area where the user can type in characters. Text fields are useful in that they enable the user to enter in variable data (such as a name or a descrip

59、tion).78JTextField MethodsgetText()Returns the string from the text field. Inherited setText(String text)Puts the given string in the text field. InheritedsetEditable(boolean editable)Enables or disables the text field to be edited. By default, editable is true. InheritedsetColumns(int)Sets the number of columns in this text field.The length of the text field is changeable. 79Example: Using Text FieldsAdd a text field to the preceding example to let the u

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論