Red de conocimiento informático - Espacio del host - ¿Quiero saber cómo usar Java Swing para diseñar la interfaz que quiero? Espero que puedas tomarte el tiempo para ayudar, ¡muchas gracias!

¿Quiero saber cómo usar Java Swing para diseñar la interfaz que quiero? Espero que puedas tomarte el tiempo para ayudar, ¡muchas gracias!

Representación

Idea:

¿JTabbedPane? Proporciona un método setUI para modificar la interfaz y la apariencia de JTabbedPane

Entonces podemos heredar BasicTabbedPaneUI. y reescribir algunos de los métodos de dibujo para modificar la apariencia

Código de referencia import?java.awt.*;

import?java.awt.event.*;

importar?javax.swing.*;

importar?javax.swing.plaf.ComponentUI;

importar?javax.swing.plaf.basic.BasicTabbedPaneUI;

¿clase pública?SwingDemo?extiende?JFrame?implementos?ActionListener?{

JButton?jb;

JPanel?jp3;

¿público SwingDemo? ()?{

JTabbedPane?jtpTotal?=?new?JTabbedPane();//JTabbedPane horizontal?, módulo uno, módulo dos...

JTabbedPane?jtpa? new?JTabbedPane();//Módulo 1, correspondiente a jtpa

jtpa.setTabPlacement(JTabbedPane.LEFT);//Establecer la etiqueta en dirección vertical

JPanel?jp1? ?new?JPanel(new?BorderLayout());//Crear un nuevo JPanel con un diseño de borde

JTextArea?jta?=?new?JTextArea();//Área de texto

jta.append("Si la vida es como el primer encuentro, ¿por qué el viento otoñal está triste y pintado con un abanico?");//El contenido del campo de texto

jta.setFont( new?Font("宋体",Font .BOLD,?25));//El texto del campo de texto

jp1.add(jta);

JPanel?jp2? =?new?JPanel();

JLabel?jl?=?new?JLabel("PI=3.1415926");

jl.setFont(new?Font("script oficial ",Font.BOLD,?20));

jl.setForeground(Color.RED);//Establecer el color del texto de jl

jp2.add(jl);

//Para facilitar la respuesta a eventos, coloque las definiciones de jb y jp3 en la parte superior

jp3?=?new?JPanel();

jb?=?new?JButton("Haga clic en el botón para modificar el color de fondo de esta página");

jb.addActionListener(this);//Agregar respuesta de evento

jp3. add(jb);

jtpa.add(" Opción uno",?jp1);

jtpa.add("Opción dos",?jp2);

jtpa.add("Opción tres",?jp3);

p>

JPanel?jpA?=?new?JPanel(new?BorderLayout());

jpA. add(jtpa);

//Agrega todas las opciones de la etiqueta jtpa de

El color de fondo se establece en blanco

for?(int?i?=?0;?i?

jtpa. setBackgroundAt( i,?Color.WHITE);

}

jtpa.setUI(new?TPUI());

jtpTotal.add("Módulo uno ", ?jpA);

// Los jtpb y jtpc siguientes no agregan componentes ni establecen colores, pero la estructura parece más intuitiva

JTabbedPane?jtpb?=?new?JTabbedPane ();

jtpb.setTabPlacement(JTabbedPane.LEFT);

JPanel?jp4?=?new?JPanel();

JPanel?jp5?= ?new?JPanel();

JPanel?jp6?=?new?JPanel();

jtpb.add("Opción cuatro",?jp4);

jtpb.add("Opción cinco",?jp5);

jtpb.add("Opción seis",?jp6);

JPanel?jpB?=?new ?JPanel(new?BorderLayout());

jpB.add(jtpb);

jtpTotal.add("Módulo dos",?jpB);

JTabbedPane?jtpc?=?new?JTabbedPane();

jtpc.setTabPlacement(JTabbedPane.LEFT);

JPanel?jp7?=?new?JPanel(); p>

JPanel?jp8?=?new?JPanel();

JPanel?jp9?=?new?JPanel();

jtpc.add(" Opción 7 ",?jp7);

jtpc.add("Opción ocho",?jp8);

jtpc.add("Opción nueve",?jp9);

JPanel?jpC?=?new?JPanel(new?BorderLayout());

jpC.add(jtpc);

jtpTotal.add("Módulo tres ", ?jpC);

add(jtpTotal);

setTitle("Ventana principal");//?Title

setSize(620,?480 ); //?Size

setLocationRelativeTo(null);//?Centered

setDefaultCloseOperation(EXIT_ON_CLOSE);//?Salga del programa después de cerrar la ventana

> setVisible(true );//?La ventana es visible

}

public?static?void?main(String[]?args)?{

new?SwingDemo() ;

}

@Override

public?void?actionPerformed(ActionEvent?e)?{//Haga clic para modificar el color de jp3

if(e.getSource()==jb){//Si se hace clic en el botón jb

jp3.setBackground

(new?Color(getInt(),getInt(),getInt()));// Luego modifica el color de fondo de jp3

}

}

public?int?getInt(){//Generar aleatoriamente números entre 0 y 255, utilizados para generar colores aleatorios r, g, b

return?(int)?(Math.random()* 256 );

}

}

//Tenga en cuenta que esta clase se usa para modificar la apariencia de JTabbedPane

class?TPUI? se extiende? BasicTabbedPaneUI?{

public?static?ComponentUI?createUI(JComponent?c)?{

return?new?TPUI();

}

@Override

protected?void?paintTabBorder(Gráficos?g,?int?tabPlacement,?int?tabIndex,?int?x,?int?y,?int?w, ?int ?h,

boolean?isSelected)?{

if?(isSelected)?{//Si la etiqueta está seleccionada,?entonces dibuja un rectángulo

g .setColor(new?Color(116,?168,?231));

g.fillRect(x?+?w?-?10,?y,?x+w,? h);

}else{//Cuando no hay ningún borde seleccionado, no es necesario dibujarlo.

g.setColor(new?Color(116,?168 ,?231));

g.drawRect(x?+?w?-?8,?y,?x+w,?h);

}

}

@Override

protected?void?paintTabBackground(Gráficos?g,?int?tabPlacement,?int?tabIndex,?int?x,?int?y ,?int?w,? int?h,

booleano?isSelected)?{

g.setColor(Color.RED);

super.paintTabBackground (g,?tabPlacement,? tabIndex,?x,?y,?w,?h,?false);

//El último parámetro?true dibuja el color de fondo false no dibuja<. /p>

///? Si el parámetro es isSelected?, entonces el color de fondo se dibujará si está seleccionado, y si no está seleccionado, no se dibujará.

}

}