Trabalhando com janelas de interface do cacau

Talvez o elemento mais importante de qualquer aplicação baseada em GUI é a janela. Na verdade, é tão importante que esses caras de Redmond é usado para nomear seu sistema operacional. As janelas em uma aplicação são como pedaços de papel que você usa para coletar idéias, informações de exibição e entrada de registro.

Janelas em Cocoa são igualmente importantes. Mac OS X continua usando as tradições janela finas que fizeram o Mac OS famoso. Todo o tempo, Cacau desenvolve e melhora a essas idéias do passado com novas características.

Como as janelas formam a base para quase todas as interfaces, você vai usá-los muitas vezes. Algumas das funções mais comuns que você vai realizar incluem o seguinte:

  • Abertura e fechamento de janelas
  • mover janelas
  • Adicionando janelas para o menu do Windows

Neste artigo, você descobrirá como realizar todas essas tarefas e muito mais.

Abrir e fechar uma janela

Quando você trabalha com janelas em seus projetos de Cacau, você normalmente usar Interface Builder para projetar-los. Além disso, se você deixar uma janela aberta no Interface Builder quando você está projetando sua interface, que a vontade janela é exibida quando o aplicativo é executado. Por isso, muitas vezes é desnecessário para emitir um comando para abrir uma janela.

Video: Gimp - Parte 2 - Trabalhando com Janelas

Fechar uma janela é uma simples questão:

[TheWindow perto];

Quando você fechar uma janela desta forma, a janela está desaparecido. Seu conteúdo é passado de memória. Não é mais. Isso significa ver a janela novamente, você tem que abrir um novo objeto janela.

Ocultando e mostrando uma janela

Se você preferir manter uma janela em torno em vez de excluí-lo da memória, você deve escondê-lo em vez de fechá-lo. Ocultando uma janela também é uma tarefa fácil de realizar. Por exemplo, suponha que você tem uma saída (chamado theWindow) como parte de sua classe de controlador. A tomada representa uma janela em sua interface.

Para ocultar essa janela, um método hideWindow pode ter esta aparência:

- (IBAction) hideWindow: (id) sender
{
[TheWindow orderOut: remetente] -
}

O método orderOut da classe NSWindow esconde uma janela de exibição. Ele ainda existe na memória-ele simplesmente não é visível. Para saber se uma janela estiver visível, você pode verificar o valor de retorno do método isVisible:

- (IBAction) hideWindow: (id) sender
{
se ([theWindow isVisible])
[TheWindow orderOut: remetente] -
}

Para fazer a janela aparecer novamente, basta usar o método orderFront:

- (IBAction) SHOWWINDOW: (id) sender
{
[TheWindow orderFront: remetente] -
}

Se você gostaria de uma janela para aparecer na tela e agir como a janela principal, interceptar teclas digitadas, use o método makeKeyAndOrderFront. programadores de cacau freqüentemente usam este método no método awakeFromNib para forçar a janela principal para o primeiro plano:

- (void) {awakeFromNib
[TheWindow makeKeyAndOrderFront: nil] -
}

janelas de posicionamento

Outra tarefa importante que você vai precisar para realizar é janelas de posicionamento. Antes de ir mandando janelas ao redor, primeiro você precisa descobrir a sua posição atual. Use o método de quadros de NSWindow para descobrir a origem eo tamanho de uma janela. O método retorna uma estrutura NSRect, que contém NSPoint e NSSize descrevendo origem e o tamanho da janela, respectivamente.

Video: Tela Mosqueteira Branca Com Velcro Em Toda Extensão

Depois de saber a origem e tamanho das janelas, que é uma questão trivial para reposicioná-lo. Primeiro, defina a origem do seu agrado e chamar o método setFrameOrigin para aplicar a nova posição. Este exemplo move uma janela de dez pixels esquerda de sua posição atual:

- (IBAction) moveLeft: (id) sender
{
NSRect theFrame = [quadro theWindow] -
NSPoint theorigin = theFrame.origin-
theOrigin.x = theOrigin.x - 10-
[TheWindow setFrameOrigin: theorigin] -
}

Para posicionar uma janela no meio da tela, use o método centro calhar. Este exemplo concentra uma janela na tela:



- (IBAction) CenterWindow: (id) sender
{
[Center theWindow] -
}

Manter o controle de janelas

A maioria dos aplicativos de cacau têm um menu Janela para ajudar os usuários a manter o controle de janelas abertas. Normalmente, você deve usar este menu como uma lista de janelas de documentos abertos. (Você provavelmente não iria exibir, por exemplo, uma janela barra de ferramentas no menu Window.) A grande coisa sobre o menu Janela é que Cacau cuida disso para você. Se sua janela tem as seguintes propriedades, Cacau adiciona automaticamente ao menu Janela:

  • Tem uma barra de título
  • é redimensionável
  • Pode se tornar a janela principal

Você pode excluir uma janela no menu Janela, alterando qualquer uma dessas propriedades. Se, por outro lado, você tem uma janela que obedece cada uma dessas regras, mas você ainda quer que ele seja deixado de fora do menu Janela, use o método setExcludedFromWindowsMenu. O método awakeFromNib é um bom lugar para usar esta chamada porque o método tem efeito quando seu aplicativo lança.

- (void) {awakeFromNib
[TheWindow setExcludedFromWindowsMenu: nil] -
}

Colocando janelas para trabalhar para você

Para ver como estes janela apresenta o trabalho, faça o seguinte:

1. Inicie o Project Builder e criar um novo projeto de aplicativo de cacau.

Clique duas vezes no ícone do Project Builder no Finder para lançá-lo. Depois que ele lança, escolher o -gt arquivo; Novo menu Project. Na janela que aparecer, selecione Cacau Aplicação e clique em OK.

2. Crie uma nova janela no arquivo MainMenu.nib.

Clique duas vezes no arquivo MainMenu.nib no Grupo de Recursos para abrir o arquivo no Interface Builder. Na janela de arquivo MainMenu.nib, clique na guia Instances. Em seguida, arraste uma nova janela do painel de cacau em Windows da janela Paletas para a janela de arquivo do MainMenu.nib. Para acompanhar o exemplo, o nome desta nova janela MenuWindow. Você vai usá-lo para controlar a janela padrão que já é parte da interface.

3. Abra o novo MenuWindow e adicione três botões a ele.

4. Crie uma classe de controlador.

Para fazer isso, clique na guia Classes de janela de arquivo do MainMenu.nib. Rolar para a esquerda e selecione NSObject. Pressione Enter para criar uma nova classe e nomeá-la MyWindowController. Escolha Classes -gt; Instanciar MyWindowController para criar uma instância da nova classe.

5. Clique duas vezes a nova instância MyWindowController e adicionar pontos de venda e ações para a instância na janela Info.

Adicione os seguintes pontos de venda: theMenuWindow, theShowButton e theWindow. Adicionar essas ações: CenterWindow, moveLeft e ShowWindow.

Ligue as três novas ações aos botões no MenuWindow por controle-arrastando de cada botão t instância MyWindowController. Clique em Conectar na janela de Informações para conectar cada ação.

Em seguida, conecte as duas saídas relacionadas com a janela para as suas janelas correspondentes. Control-arraste a partir do exemplo MyWindowController para cada janela em janela de arquivo do MainMenu.nib. Clique em Conectar na janela de Informações para ligar à tomada apropriada.

Finalmente, conecte a tomada theShowButton para o botão de cima na MenuWindow.

Video: Aumenta procura por redes de proteção em janelas

6. Faça duplo clique na instância MyWindowController. Escolha Classes -gt; Criar arquivos para MyWindowController e adicionar os arquivos de cabeçalho e implementação para a instância.

7. Volte ao Project Builder e adicionar este código para o arquivo MyWindowController.m:

#import “MyWindowController.h”
@implementation MyWindowController
- (IBAction) CenterWindow: (id) sender
{
[Center theWindow] -
}
- (IBAction) moveLeft: (id) sender
{
NSRect theFrame = [quadro theWindow] -
NSPoint theorigin = theFrame.origin-
theOrigin.x = theOrigin.x - 10-
[TheWindow setFrameOrigin: theorigin] -
}
- (IBAction) SHOWWINDOW: (id) sender
{
se ([theWindow isVisible])
{
[TheWindow orderOut: remetente] -
[TheShowButton setTitle: @”Show Window”] -
}
outro
{
[TheWindow orderFront: remetente] -
[TheShowButton setTitle: @”ocultar a janela”] -
}
}
- (void) {awakeFromNib
[TheWindow makeKeyAndOrderFront: nil] -
[TheMenuWindow makeKeyAndOrderFront: nil] -
}
@fim

8. Teste do projecto.

Para isso, escolha Construir -gt; Criar e executar.


Publicações relacionadas