Tema "Ventanas de la interfaz gráfica de usuario" (parte 2). Analisis del proyecto 'choice'



Descargar 56,7 Kb.
Fecha de conversión21.06.2017
Tamaño56,7 Kb.
Prof. Gueorgi Khatchatourov
UEA: LABORATORIO DE PROGRAMACION ORIENTADA A OBJETOS (1151072)
Resumen de Clase(virtual, durante el paro) #11

Fecha: 16/10/14




Tema "Ventanas de la interfaz gráfica de usuario" (parte 2).

Analisis del proyecto 'choice'

1. Clase abtsracta Component. Recuerde que su primer uso fue en p.1 de http://newton.uam.mx/xgeorge/lab_prog_o_o/14_O/Resumen_Clase_6.doc


Un extracto de la documentación oficial:

///// http://docs.oracle.com/javase/7/docs/api/java/awt/Component.html //////

java.awt

Class Component
java.lang.Object

java.awt.Component


All Implemented Interfaces:

ImageObserver, MenuContainer, Serializable

Direct Known Subclasses:

Button, Canvas, Checkbox, Choice, Container, Label, List, Scrollbar, TextComponent

----------------------------------------------------------------------
public abstract class Component

extends Object

implements ImageObserver, MenuContainer, Serializable
A component is an object having a graphical representation that can be displayed on the screen and that can interact with the user. Examples of components are the buttons, checkboxes, and scrollbars of a typical graphical user interface.
The Component class is the abstract superclass of the nonmenu-related Abstract Window Toolkit components. Class Component can also be extended directly to create a lightweight component. A lightweight component is a component that is not associated with a native window. On the contrary, a heavyweight component is associated with a native window. The isLightweight() method may be used to distinguish between the two kinds of the components.
Lightweight and heavyweight components may be mixed in a single component hierarchy. However, for correct operating of such a mixed hierarchy of components, the whole hierarchy must be valid. When the hierarchy gets invalidated, like after changing the bounds of components, or adding/removing components to/from containers, the whole hierarchy must be validated afterwards by means of the Container.validate() method invoked on the top-most invalid container of the hierarchy.

//////////////////////////////////

2. Llevan attención al uso en el pryecto 'choice' de una integración de varias técnicas:

'extended'

'implements ActionListener'

abstract class Component con sus subclasses (ver la lista de métodos disponibles

para objeto 'frame')
3.Analicen clases JLabel,JCheckBox, JRadioButton, JComboBox
4. En proyecto "choice" ¿A parte de tres fuentes a seleccionar, Serif, SansSerif, y Monospaced, el usuario final tiene opción de asignar algúin otro?
5. Lean mis comentarios a continuación al archivo "FontViewerFrame.java" del proyecto 'choice'; ¿Cuál línea del código es finalmente responsable de la modificación del tipo de fuente después de que el programa obtuvo la información completa sobre la selección hecha por el usuario?
6. Tarea de "interfaz gráfica de usuario. Combinar los proyectos 'choice', 'menu', y 'slider' de la manera siguiente:

-- su ventana debe simultaneamente proporcionar al usuario ambos canales de la modificación del texto: tanto aquellos que proporciona 'choice' como los de 'menu';

-- también en misma ventana deben ser implementados los controles del proyecto 'slider', sin embargo aplicables no al color del fondo de la ventana sino al propio texto.
//////////////////////////////////

package ed3_ch18_choice;


import java.awt.BorderLayout;

import java.awt.Font;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.ButtonGroup;

import javax.swing.JButton;

import javax.swing.JCheckBox;

import javax.swing.JComboBox;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JRadioButton;

import javax.swing.border.EtchedBorder;

import javax.swing.border.TitledBorder;

public class FontViewerFrame extends JFrame

{

/**


Constructs the frame.

*/

public FontViewerFrame() // constructor de marco de la interfaz



// gráfica solo asigna un tipo de distribución, introduce

// listener, y indica el método setSampleFont(); como

// responsable de detalles particulares

{

// Construct text sample



sampleField = new JLabel("Big Java"); //subclass of Component

add(sampleField, BorderLayout.CENTER); //a JFrame method



//¿que significa *.CENTER con respecto de posibles elementos

// introducidos luego?


// This listener is shared among all components

class ChoiceListener implements ActionListener

{

public void actionPerformed(ActionEvent event)



{

setSampleFont(); //actualice la ventana



//de la interfaz gráfica despues de un evento

}

}



listener = new ChoiceListener();
createControlPanel(); //indica detalización de la ventana interfaz

// gráfica mediante una serie de paneles

setSampleFont(); // realiza presentación inicial de la interfaz gráfica

setSize(FRAME_WIDTH, FRAME_HEIGHT);

}
/**

Creates the control panel to change the font.

*/

public void createControlPanel()



{

JPanel facenamePanel = createComboBox();

JPanel sizeGroupPanel = createCheckBoxes();

JPanel styleGroupPanel = createRadioButtons();


// Line up component panels
JPanel controlPanel = new JPanel();

// controlPanel será panel-contenedora de otros tres paneles

controlPanel.setLayout(new GridLayout(3, 1));

controlPanel.add(facenamePanel);

controlPanel.add(sizeGroupPanel);

controlPanel.add(styleGroupPanel);
// Add panels to content pane
add(controlPanel, BorderLayout.SOUTH);

//¿cómo va a cambiar ventana con *.NORTH?

}
/**

Creates the combo box with the font style choices.

@return the panel containing the combo box

*/

public JPanel createComboBox()



{

facenameCombo = new JComboBox();

facenameCombo.addItem("Serif");

facenameCombo.addItem("SansSerif");

facenameCombo.addItem("Monospaced");

facenameCombo.setEditable(true);

facenameCombo.addActionListener(listener);
JPanel panel = new JPanel();

panel.add(facenameCombo);

return panel;

}
/**

Creates the check boxes for selecting bold and italic styles.

@return the panel containing the check boxes

*/

public JPanel createCheckBoxes()



{

italicCheckBox = new JCheckBox("Italic");

italicCheckBox.addActionListener(listener);
boldCheckBox = new JCheckBox("Bold");

boldCheckBox.addActionListener(listener);


JPanel panel = new JPanel();

panel.add(italicCheckBox);

panel.add(boldCheckBox);

panel.setBorder

(new TitledBorder(new EtchedBorder(), "Style"));
return panel;

}
/**

Creates the radio buttons to select the font size

@return the panel containing the radio buttons

*/

public JPanel createRadioButtons()



{

smallButton = new JRadioButton("Small");

smallButton.addActionListener(listener);
mediumButton = new JRadioButton("Medium");

mediumButton.addActionListener(listener);


largeButton = new JRadioButton("Large");

largeButton.addActionListener(listener);

largeButton.setSelected(true);
// Add radio buttons to button group
ButtonGroup group = new ButtonGroup();

group.add(smallButton);

group.add(mediumButton);

group.add(largeButton);


JPanel panel = new JPanel();

panel.add(smallButton);

panel.add(mediumButton);

panel.add(largeButton);

panel.setBorder

(new TitledBorder(new EtchedBorder(), "Size"));


return panel;

}
/**

Gets user choice for font name, style, and size

and sets the font of the text sample.

*/

public void setSampleFont()



{

// Get font name

String facename

= (String) facenameCombo.getSelectedItem();

// Get font style

int style = 0;

if (italicCheckBox.isSelected())

style = style + Font.ITALIC;

if (boldCheckBox.isSelected())

style = style + Font.BOLD;

// Get font size
int size = 0;

final int SMALL_SIZE = 24;

final int MEDIUM_SIZE = 36;

final int LARGE_SIZE = 48;


if (smallButton.isSelected())

size = SMALL_SIZE;

else if (mediumButton.isSelected())

size = MEDIUM_SIZE;

else if (largeButton.isSelected())

size = LARGE_SIZE;

// Set font of text field

sampleField.setFont(new Font(facename, style, size));

sampleField.repaint();

}

private JLabel sampleField;



private JCheckBox italicCheckBox;

private JCheckBox boldCheckBox;

private JRadioButton smallButton;

private JRadioButton mediumButton;

private JRadioButton largeButton;

private JComboBox facenameCombo;

private ActionListener listener;
private static final int FRAME_WIDTH = 300;

private static final int FRAME_HEIGHT = 400;



}


La base de datos está protegida por derechos de autor ©absta.info 2016
enviar mensaje

    Página principal