Cómo diseñar una ventana usando Java, las funciones requeridas son las siguientes:
Tengo una colección de interfaces para swing, que contiene componentes principales de uso común. Puedes usarlos directamente
paquete demo.synth;
importar javax. swing.*;
importar java.awt.*;
importar java.awt.event.*
importar java.lang.reflect.InvocationTargetException;
importar javax.swing.tree.*;
importar javax.swing.event.*;
importar javax.swing.border.*; p>
importar javax.swing.event.*;
importar javax.swing.border.*;
p>
importar javax.swing.plaf.metal .MetalLookAndFeel;
importar javax.swing.plaf.synth.SynthLookAndFeel;
importar javax.swing.table.*
la clase pública SwingTest extiende JFrame {
/**
* Módulo principal, inicializa todos los submódulos y establece las propiedades relevantes del marco principal
*/
public SwingTest() {
// Inicializa todos los módulos
MenuTest menuTest = new MenuTest();
LeftPanel leftPanel = new LeftPanel(); p>
RightPanel rightPanel = nuevo RightPanel();
BottomPanel bottomPanel = nuevo BottomPanel();
CenterPanel centerPanel = nuevo CenterPanel();
// Establecer el diseño del marco principal
Container c = this.getContentPane();
// c.setLayout(new BorderLayout()
> this.setJMenuBar(menuTest);
c.add(leftPanel, BorderLayout.WEST);
c.add(rightPanel, BorderLayout. EAST);
c.add(centerPanel, BorderLayout.CENTER);
c.add(bottomPanel, BorderLayout.SOUTH);
// Usar clase implícita sin nombre, agregar eventos de ventana
this.addWindowListener(new WindowAdapter() {
public void WindowClosing(WindowEvent e) {
// Liberar recursos, salir del programa
disponer();
Sistema.
exit(0);
}
});
setSize(800, 600);
setTitle("* Todo el software grupal Of Swing *");
// Oculta la barra de título del marco. Esta función está desactivada temporalmente para facilitar el uso de eventos de ventana.
// setUndecorated(true) ;
setLocation(200, 150);
this.setVisible(true);
}
// //// ////// ///////////////////////////////////////////// ////////// ///////////////
/**
* Módulo de procesamiento de barra de menú JMenuBar -- --JMenu-- --JMenuItem --ActionListener
*
*/
class MenuTest extiende JMenuBar {
JDialog privado aboutDialog
/**
* Operación de inicialización del menú
*/
public MenuTest() {
JMenu fileMenu = new JMenu("Archivo");
JMenuItem exitMenuItem = new JMenuItem("Salir", KeyEvent.VK_E);
JMenuItem aboutMenuItem = new JMenuItem("Acerca de... .", KeyEvent.VK_A);
fileMenu.add(exitMenuItem);
fileMenu.add(aboutMenuItem);
this.add(fileMenu);
aboutDialog = new JDialog ();
initAboutDialog();
// Evento de menú
exitMenuItem.addActionListener(new ActionListener( ) {
acción vacía públicaPerformed(ActionEvent e) {
disponer();
System.exit(0);
});
aboutMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// Procesamiento del cuadro de diálogo "Acerca de"
aboutDialog.setVisible(true
}
}); >
/**
>
* Volver sobre el cuadro de diálogo
*/
public JDialog getAboutDialog() {
return aboutDialog;
}
/**
* Establece la apariencia del cuadro de diálogo "Acerca de" y responde a eventos. Las operaciones se realizan en el marco de contenido como JFrame.
*/
public void initAboutDialog() {
aboutDialog.setTitle("Acerca de"
Contenedor con = aboutDialog.getContentPane(); >
// Usar declaraciones html en Swing
Icon icon = new ImageIcon("smile.gif");
JLabel aboutLabel = new JLabel("lt; htmlgt; lt ; bgt ;lt;font size=5gt;"
"lt;centergt;¡Todo el software colaborativo de Swing! " "lt;brgt;Kasam.Huang",
icono, JLabel. CENTER) ;
// JLabel aboutLabel = new JLabel("Swing
// ¡Versión simplificada de la lista de componentes!", icono, JLabel.CENTER);
con. add(aboutLabel, BorderLayout.CENTER);
aboutDialog.setSize(450, 225);
aboutDialog.setLocation(300, 300);
aboutDialog. addWindowListener(new WindowAdapter() {
public void WindowClosing(WindowEvent e) {
dispose();
}
}) ;
}
}
// //////////////////// //// //////////////////////////////////////////////// ////////
/**
* El módulo más a la izquierda hereda JPanel y el contenido de inicialización es JTree JPanel-- --JTree
*/
clase LeftPanel extiende JPanel {
private int i = 0
public LeftPanel() {
DefaultMutableTreeNode root = new DefaultMutableTreeNode("Raíz");
DefaultMutableTreeNode niño = new DefaultMutableTreeNode("Niño
");
DefaultMutableTreeNode select = new DefaultMutableTreeNode("select");
DefaultMutableTreeNode child1 = new DefaultMutableTreeNode("" i);
root.add( niño);
root.add(select);
child.add(child1);
JTree árbol = nuevo JTree(raíz);
tree.getSelectionModel().setSelectionMode(
TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION);
// Altura de fila de cada nodo
tree.setRowHeight( 20 );
tree.addTreeSelectionListener(new TreeSelectionListener() {
public void valueChanged(TreeSelectionEvent e) {
// Las clases implícitas no pueden hacer referencia directamente al árbol de clases externo , 1. Las variables externas se pueden declarar como finales 2. Crear nuevos objetos de clases externas
JTree tree = (JTree) e.getSource();
DefaultMutableTreeNode selectNode = (DefaultMutableTreeNode) árbol
.getLastSelectedPathComponent();
i
selectNode.add(new DefaultMutableTreeNode("" i)); / Objeto s = tree.getLastSelectedPathComponent(); //
// getSelectedValue()
// JOptionPane.showMessageDialog(null, s "está seleccionado",
// "¡Mensaje!", JOptionPane.YES_OPTION);
}
});
tree.setPreferredSize(new Dimension(100, 300) ));
// tree.setEnabled(true);
JScrollPane scrollPane = new JScrollPane(tree);
// scrollPane.setSize(100, 350);
this.add(scrollPane);
}
}
// //////// ///////////////////
/////////////////////////////////////////////////// //
/**
* El módulo más bajo, hereda JPanel, inicializa el contenido como una barra de progreso y está controlado por un temporizador JPanel----JProcessBar --Timer
*/
clase BottomPanel extiende JPanel {
privado JProgressBar pb
público BottomPanel() {
pb = new JProgressBar ();
pb.setPreferredSize(new Dimension(550, 20));
// Establece un temporizador para controlar el procesamiento de la barra de progreso p>
Tiempo del temporizador = new Timer(1, new ActionListener() {
int contador = 0;
public void actionPerformed(ActionEvent e) {
contador ;
pb.setValue(counter);
Temporizador t = (Temporizador) e.getSource();
// Si la barra de progreso alcanza el valor máximo, vuelva a desarrollar el recuento
if (counter == pb.getMaximum()) {
t.stop(); = 0;
t.start();
}
}
}); .start();
pb.setStringPainted(true);
pb.setMinimum(0);
pb.setMaximum(1000); >
pb.setBackground(Color.blanco);
pb.setForeground(Color.rojo
this.add(pb); }
/* *
* Establecer el modelo de datos de la barra de progreso
*/
public void setProcessBar(BoundedRangeModel rangeModel) {
pb.setModel( rangeModel);
}
}
// ////////// //////////// /////////////////////////////////////// //////////////// //
/**
* El módulo más a la derecha hereda JPanel e inicializa varios botones JPanel-- -- JButton --JToggleButton -- JList --
* JCombox --JCheckBox....
>
*/
class RightPanel extiende JPanel {
public RightPanel() {
this.setLayout(new GridLayout(8, 1));
//Inicializar varios botones
JCheckBox checkBox = new JCheckBox("CheckButton");
JButton button = new JButton("OpenFile");< / p>
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
archivo JFileChooser = new JFileChooser();
int resultado = file.showOpenDialog(new JPanel());
if (resultado == file.APPROVE_OPTION) {
String fileName = file.getSelectedFile().getName( )
String dir = file.getCurrentDirectory().toString();
JOptionPane.showConfirmDialog(null,
dir "" fileName, "SelectFile" ,
JOptionPane.YES_OPTION);
}
}
});
JToggleButton toggleButton = nuevo JToggleButton ("RadioButton");
ButtonGroup buttonGroup = new ButtonGroup();
JRadioButton radioButton1 = new JRadioButton("RadioButton 1", false);
JRadioButton radioButton2 = new JRadioButton("RadioButton 2", false);
// Procesamiento del cuadro combinado
JComboBox comboBox = new JComboBox();
comboBox .setToolTipText ("ComboBox");
comboBox.addItem("Programador");
comboBox.addItem("Analista");
comboBox .addActionListener(nuevo ActionListener() {
acción nula pública realizada (ActionEve
nt e) {
JComboBox comboBox1 = (JComboBox) e.getSource();
comboBox1.addItem("Programador"); "Analista");
}
});
// Procesamiento del cuadro de lista
DefaultListModel litem = new DefaultListModel ();
litem.addElement("SAT");
litem.addElement("SUN");
lista JList = nueva JList(litem); p>
list.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
JList l = (JList) e.getSource() ; p>
Objeto s = l.getSelectedValue();
JOptionPane.showMessageDialog(null, s, "Mensaje!",
JOptionPane.YES_OPTION);
}
});
// Agregar grupo de botones
buttonGroup.add(radioButton1);
buttonGroup.add (radioButton2);
//Añadir varios botones para mostrar en JPanel
add(button);
add(toggleButton);
p>
agregar(checkBox);
agregar(radioButton1);
agregar(radioButton2
agregar(comboBox); >
agregar(lista);
this.setBorder(new EtchedBorder(EtchedBorder.LOWERED,
Color.LIGHT_GRAY, Color.blue)); > }
}
// //////////////////////////////// // /////////////////////////////////////////////
/ **
* El módulo de la capa intermedia hereda JPanel, inicializa la pestaña y establece el área de texto y la tabla en la pestaña. La parte superior e inferior del área de texto están separadas por separadores JPanel-. - -JTabbedPane--
* --Draw --JTable -JTextAreas -JText --JPopupMenu
*/
clase CenterPanel extender
s JPanel {
public CenterPanel() {
pestaña JTabbedPane = nuevo JTabbedPane(JTabbedPane.TOP);
JTextField textField = nuevo JTextField(
"Área de texto, haga clic en lt; Botón de texto; ¡seleccionará el archivo!"
textField.setActionCommand("textField");
JTextPane textPane = new JTextPane()); ;
textPane.setCursor(new Cursor(Cursor.TEXT_CURSOR));
textPane.setText("Editor, haga clic en el área de texto.");
/ / textPane.setForeground(new ImageIcon(""));
textPane.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
JTextPane textPane = (JTextPane) e.getSource();
textPane.setText("¡El comando de clic del editor fue exitoso!");
// textField.setText("" textPane. getText());
}
});
/*
* UpperCaseDocument doc = nuevo documento(); p>
/*
* UpperCaseDocument doc = nuevo documento();
p>* textField.setDocumentsetDocument(doc);
* doc. addDocumentListener(new DocumentListener() { public void
* changeUpdate(DocumentEvent e){} public void
* removeUpdate(DocumentEvent e){} public void
* insertUpdate(DocumentEvent e) { Texto del documento =
* (Documento)e.getDocument(); text.setText("¡Copia exitosa!"); /
JSplitPane splitPane = nuevo JSplitPane(JSplitPane.VERTICAL_SPLIT,
textField, textPane);
Tabla JTable = nueva JTable(10, 10);
// UIManager.get("Table.focusCellForeground");
// table.showHorizontalLines(true);
// table.showVerticalLines(true);
// table.setGridColor(Color.blue);
panel JPanel = nuevo JPanel();
panel.add(table.getTableHeader( ), BorderLayout.NORTH);
pane.add(table);
tab.addTab("Acción de texto", splitPane);
// tab .addTab(table.getTableHeader());
tab.addTab("Acción de tabla", panel);
tab.setPreferredSize(new Dimension(500, 600));
this.add(tab);
this.setEnabled(true
}
}
public static void main(String args[]){
new SwingTest()
}
}
;