Matlab - Problema añadir elementos en un panel

 
Vista:
sin imagen de perfil

Problema añadir elementos en un panel

Publicado por ss (3 intervenciones) el 06/11/2014 11:35:45
Hola tengo una duda con matlab estoy intentando hacer un panel con una imagen de fondo y cajetillas para poner usuario y contraseña. Lo hago de la siguiente forma. la cuestión es que si pongo una imagen de fondo luego no se me visualizan los otros elementos, parece que no puedo visualizarlos todos a la vez. Sabéis como puedo solucionarlo?

% Load the image
jImFile = java.io.File( imageFile );
try
obj.OriginalImage = javax.imageio.ImageIO.read( jImFile );
catch err
error('SplashScreen:BadFile', 'Image ''%s'' could not be loaded.', imageFile );
end
% Read it again into the copy we'll draw on
obj.BufferedImage = javax.imageio.ImageIO.read( jImFile );

% Create the icon
obj.Icon = ImageIcon( obj.BufferedImage );

% Create the frame and fill it with the image
obj.Frame = JFrame( title );
obj.Frame.setUndecorated( true );
obj.Label = JLabel( obj.Icon );

p = obj.Frame.getContentPane();
p.add(obj.Label);


% label1 = javax.swing.JLabel('Username:');
% label1.setBounds(300, 150, 100, 350);
% p.add(label1);
%
% nameField = javax.swing.JTextField();
% nameField.setBounds(100, 400, 150, 20);
% p.add(nameField);
%
% label2 = javax.swing.JLabel('Password:');
% label2.setBounds(15, 40, 300, 200);
% p.add(label2);
%
% fieldPass = javax.swing.JPasswordField();
% fieldPass.setBounds(100, 800, 150, 20);
% p.add(fieldPass);
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Jorge De Los Santos
Val: 30
Ha disminuido su posición en 12 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Problema añadir elementos en un panel

Publicado por Jorge De Los Santos (213 intervenciones) el 13/11/2014 06:04:01
Hola SS.

En términos "amplios" la gente de MathWorks considera al código Java incrustado en un archivo MATLAB como una forma "no documentada" de desarrollar programas, de modo que en ocasiones puede generar resultados "raros", sobre todo en las librerías gráficas swing y awt que no funcionan del todo bien como en un fichero Java. Desde luego que la capacidad de utilizar código Java amplia las posibilidades de las GUIs MATLAB, pero hay que tener cierto cuidado con ello. Se recomienda, generalmente, utilizar la función "javacomponent" para manipular objetos gráficos de las clases Java.

Hace un tiempo "escribí" una interfaz gráfica que puede usarse para introducir usuario y contraseña, utilizando la clase javax.swing.JPasswordField para el campo de contraseña. Te la adjunto enseguida:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
function passworddlg(user,pass)
%
% PASSWORDDLG(user,pass)
% 
% Donde:
% 
%       user   -   Nombre de usuario      
%       pass   -   Contrasenia o 'password'
%
%
% Version:  0.0.1
% Date: 02/06/2014
% Author: Jorge De Los Santos
% E-mail: delossantosmfq@gmail.com
%
 
if nargin < 2
    % En caso de no pasarse argumentos de entrada (testeo)
    user='user';
    pass='123';
end
 
if ~isa(user,'char') || ~isa(pass,'char')
    error('Los argumentos de entrada deben ser de tipo char');
end
 
fpw = figure('MenuBar','none','NumberTitle','off',...
    'Resize','off','Name','Passworddlg 0.0.1',...
    'Position',[0 0 250 120]);
centerfig();
 
 
uicontrol(fpw,'style','text',...
    'String','Usuario',...
    'Position',[10 85 70 20],...
    'FontSize',10,...
    'BackgroundColor',get(fpw,'color'));
 
hUsr=uicontrol(fpw,'style','edit',...
    'String','',...
    'Position',[90 85 130 22]);
 
uicontrol(fpw,'style','text',...
    'String','Contraseña',...
    'Position',[10 50 70 20],...
    'FontSize',10,...
    'BackgroundColor',get(fpw,'color'));
 
[hJPw,hPw]=javacomponent({'javax.swing.JPasswordField'},[],fpw);
set(hPw,'Position',[90 50 130 22]);
 
uicontrol(fpw,'style','push',...
    'String','Aceptar',...
    'Position',[80 10 90 22],...
    'FontSize',10,...
    'FontWeight','Bold',...
    'Callback',@aceptar);
 
    function aceptar(~,~)
        pass_entrada=get(hJPw,'Text'); % Obtener contrasenia
        user_entrada=get(hUsr,'String'); % Obtener usuario
        if strcmp(pass,pass_entrada) && strcmp(user,user_entrada)
            close(gcf);
        else
            warndlg('Usuario o contraseña incorrecta','LAB DLS');
        end
    end
end



Claro que lo anterior no tiene una imagen de fondo, pero puedes añadirla sin muchas complicaciones utilizando el axes del elemento figure, sin necesidad de usar un JPanel.

Cualquier duda puedes comentarla.


Saludos.

Jorge De Los Santos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar