GUI Programming using NetBeans

GUI Programming using NetBeans GUI construction • We have previously talked about elements in a (simple) GUI – Frames, Panes and Dialogs – Text fiel...
Author: Nathan Lawson
4 downloads 2 Views 552KB Size
GUI Programming using NetBeans

GUI construction • We have previously talked about elements in a (simple) GUI – Frames, Panes and Dialogs – Text fields – Lists and Combo boxes – Check and Radio buttons

• We now look more closely at how to use GUI controls in an application 2

GUI construction • In general, we have two options when constructing a GUI – Build it ”by hand” using Swing API – Use the NetBeans GUI Builder

• Using the GUI Builder is usually much easier than hand-coding the GUI – Does not give you complete control

3

GUI construction

4

GUI construction • If you wish to construct a GUI manually, you usually begin by creating a JFrame • A JFrame object is essentially an empty window, into which you can add containers for GUI controls • Typically, you will add a JPanel to the frame – the JPanel object will contain the actual GUI controls 5

GUI construction public static void main(String[] args) { JFrame theFrame = new JFrame(); theFrame.setBounds(200, 200, 720, 450); theFrame.setVisible(true); JPanel thePanel = new JPanel(); theFrame.add(thePanel); } 6

GUI construction • On the JPanel object, various layout strategies can be used – Flow layout – left to right – Border layout – groups into areas – Grid layout – groups into a grid

• Border layout is default, and also most commonly used

7

More Layouts The following layout managers are supported by Java and NetBeans – – – –

Free Layout Null Layout Card Layout GridBag Layout

Some Common Layouts

GUI construction • Using border layout, the panel is divided into five areas – Center – North – South – East – West 10

GUI construction • If a control is put into an area, it will expand to fill out the area • Good when resizing, but may look weird… • If you need a finer level of control, put a panel inside a panel… • …or maybe consider a different layout

11

GUI construction public static void main(String[] args) { JFrame theFrame = new JFrame(); theFrame.setBounds(200, 200, 240, 150); theFrame.setVisible(true); JPanel thePanel = new JPanel(); thePanel.setLayout(new BorderLayout()); thePanel.add(new Button("Center"), BorderLayout.CENTER); theFrame.add(thePanel); }

12

Text field • Two common purposes: – Allow the user to enter data as text – Display text data to the user

• A text field can be ”enabled” or ”disabled” – Enabled: Data can be entered – Disabled: Data can only be displayed

• At some point we need to set or extract the text from the text field 13

Text field JFrame theFrame = new JFrame(); theFrame.setBounds(200, 200, 300, 300); JPanel thePanel = new JPanel(); thePanel.setLayout(new BorderLayout()); JTextField theTextField = new JTextField(); thePanel.add(theTextField, BorderLayout.NORTH); theFrame.add(thePanel); theFrame.setVisible(true);

14

Text field Text field

15

Text field • Enabling a text field theTextField.setEditable(true);

• Disabling a text field theTextField.setEditable(false);

• Setting the text in a text field theTextField.setText("Greeting earthlings!");

• Getting the text from a text field String s = theTextField.getText();

16

List box / Combo box • A list (or combo) box enables the user to choose an option between many alternatives • List box: User can only choose between specified alternatives • Combo box: User can choose between specified alternatives, or specify choice manually (type it in) 17

List box / Combo box Object[] choices = {"One", "Two", "Three", "Four"}; JComboBox theBox = new JComboBox(choices); theBox.setEditable(true); thePanel.add(theBox, BorderLayout.NORTH);

18

List box / Combo box Combo box (editable)

19

List box / Combo box • Enabling a Combo box theBox.setEditable(true);

• Disabling a Combo box theBox.setEditable(false);

• Setting the selection in a Combo box theBox.setSelectedItem(”Three");

• Getting the selection from a Combo box String s = (String)theBox.getSelectedItem();

20

Check boxes • In some cases, the set of possible choices is limited to two options • Often a case of either/or, or perhaps on/off • A Check box can only be in two states; checked or unchecked • Nice fit for binary choices

21

Check boxes JCheckBox theBBox = new JCheckBox("Bold"); JCheckBox theIBox = new JCheckBox("Italic"); JCheckBox theUBox = new JCheckBox("Underline"); thePanel.add(theBBox,BorderLayout.WEST); thePanel.add(theIBox,BorderLayout.NORTH); thePanel.add(theUBox,BorderLayout.EAST);

22

Check boxes

23

Check boxes • Enabling a Check box theCBox.setEnabled(true);

• Disabling a Check box theCBox.setEnabled(false);

• Setting the selection in a Check box theCBox.setSelected(isSelected);

• Getting the selection from a Check box boolean isSelected = theCBox.isSelected();

24

Radio buttons • If the number of choices is few, and they are mutually exclusive, use a group of Radio buttons • Only one button in a group of Radio buttons can be selected

25

Radio buttons JRadioButton small = new JRadioButton("Small"); JRadioButton medium = new JRadioButton("Medium"); JRadioButton large = new JRadioButton("Large"); ButtonGroup theGroup = new ButtonGroup(); theGroup.add(small); theGroup.add(medium); theGroup.add(large);

26

Radio buttons

27

Radio buttons • Enabling a Radio button theRB.setEnabled(true);

• Disabling a Radio button theRB.setEnabled(false);

• Setting the selection in a Radio button theRB.setSelected(isSelected);

• Getting the selection from a Radio button boolean isSelected = theRB.isSelected();

28

29

Designing the User Interface for a GUI Interface Various components in a GUI window

Designing the User Interface for a GUI Interface Component names are used to identify the components in the program, in the same way variable names are used Components and their names

The concept of events • On the inside (code), GUI code has a very different structure than ”usual” code • Usual code is driven by conditions and various control structures (if, while,…) • GUI code is driven by events

32

The concept of events • Execution of GUI code is much more unpredictable than for usual code • We cannot predict – or dictate – what the user does, so we must always handle any possible action the user can do • A user action related to the GUI is called an event

33

The concept of events

34

The concept of events • Almost all actions the user performs will ”trigger” an event for us to handle – Moving the mouse – Clicking on a button – Writing text in a text box – ….and so on

• There are hundreds of possible events!

35

The concept of events • Fortunately, is it optional to respond to an event • We only need to do so, if we want any special action to happen • If that is the case, we must write an event handler for that particular event 36

Events and event source • Events: mouse movements, mouse clicks, and keystrokes, or by the operating system, such as a timer. • Java has pre-defined classes to represent different kinds of events. Each kind of event is defined as a class. – For example, ActionEvent defines events such as pressing a button; WindowEvent defines events such as closing or opening a window;

Writing Event Handlers Event handlers are written to control the GUI – After the windows are designed, event handlers are coded to respond to events when an action occurs, such as clicking a button – Event: an action that takes place within a program – Event handlers: a module that automatically executes when a specific event occurs

Writing Event Handlers How to write the event handler module Module ComponentName_EventName() The statements that appear here are executed when the event occurs. End Module //an event handler that closes a window Module exitButton_Click() Close End Module