GWT - Estilo com CSS

Widgets GWT contam com folhas de estilo em cascata (CSS) para estilo visual. Por padrão, o nome da classe para cada componente égwt-<classname>.

Por exemplo, o widget de botão tem um estilo padrão de gwt-Button e de maneira semelhante a widgest de TextBox tem um estilo padrão de gwt-TextBox .

Para dar a todos os botões e caixas de texto uma fonte maior, você pode colocar a seguinte regra no arquivo CSS do seu aplicativo

.gwt-Button  { font-size: 150%; }

.gwt-TextBox { font-size: 150%; }

Por padrão, nem o navegador nem o GWT cria padrões idatributos para widgets. Você deve criar explicitamente um id único para os elementos que você pode usar em CSS. Para fornecer um botão específico com idmy-button-id uma fonte maior, você pode colocar a seguinte regra no arquivo CSS do seu aplicativo -

#my-button-id { font-size: 150%; }

Para definir o id para um widget GWT, recupere seu Elemento DOM e, em seguida, defina o atributo id da seguinte forma -

Button b = new Button();
DOM.setElementAttribute(b.getElement(), "id", "my-button-id")

APIs de estilo CSS

Existem muitas APIs disponíveis para definir a configuração CSS de qualquer widget GWT. A seguir estão algumas APIs importantes que irão ajudá-lo em sua programação web do dia a dia usando GWT -

Sr. Não. API e descrição
1

public void setStyleName(java.lang.String style)

Este método irá limpar todos os estilos existentes e definir o estilo do widget para a nova classe CSS fornecida usando style .

2

public void addStyleName(java.lang.String style)

Este método adicionará um nome de estilo secundário ou dependente ao widget. Um nome de estilo secundário é um nome de estilo adicional, portanto, se houver qualquer nome de estilo anterior aplicado, eles serão mantidos.

3

public void removeStyleName(java.lang.String style)

Este método removerá determinado estilo do widget e deixará quaisquer outros associados ao widget.

4

public java.lang.String getStyleName()

Este método obtém todos os nomes de estilo do objeto, como uma lista separada por espaços.

5

public void setStylePrimaryName(java.lang.String style)

Este método define o nome do estilo principal do objeto e atualiza todos os nomes de estilo dependentes.

Por exemplo, vamos definir dois novos estilos que aplicaremos a um texto -

.gwt-Big-Text { 
   font-size:150%;
}

.gwt-Small-Text { 
   font-size:75%;
}

.gwt-Red-Text { 
   color:red;
}

Agora você pode usar setStyleName (Style) para alterar a configuração padrão para a nova configuração. Depois de aplicar a regra abaixo, a fonte de um texto ficará grande

txtWidget.setStyleName("gwt-Big-Text");

Podemos aplicar uma regra CSS secundária no mesmo widget para alterar sua cor da seguinte maneira -

txtWidget.addStyleName("gwt-Red-Text");

Usando o método acima, você pode adicionar quantos estilos desejar para aplicar em um widget. Se você remover o primeiro estilo do widget de botão, o segundo estilo ainda permanecerá com o texto.

txtWidget.removeStyleName("gwt-Big-Text");

Estilos Primário e Secundário

Por padrão, o nome do estilo principal de um widget será o nome do estilo padrão para sua classe de widget, por exemplo gwt-Button para widgets de Botão. Quando adicionamos e removemos nomes de estilo usando o método AddStyleName (), esses estilos são chamados de estilos secundários.

A aparência final de um widget é determinada pela soma de todos os estilos secundários adicionados a ele, mais seu estilo principal. Você define o estilo principal de um widget com o método setStylePrimaryName (String) . Para ilustrar, digamos que temos um widget Label. Em nosso arquivo CSS, temos as seguintes regras definidas -

.MyText {
   color: blue;
}

.BigText {
   font-size: large;
}

.LoudText {
   font-weight:  bold;
}

Vamos supor que desejamos que um determinado widget de rótulo sempre exiba texto em azul e, em alguns casos, use uma fonte maior e em negrito para dar mais ênfase.

Poderíamos fazer algo assim -

// set up our primary style
Label someText = new Label();
someText.setStylePrimaryName("MyText");
...

// later on, to really grab the user's attention
someText.addStyleName("BigText");
someText.addStyleName("LoudText");
...

// after the crisis is over
someText.removeStyleName("BigText");
someText.removeStyleName("LoudText");

Associando arquivos CSS

Existem várias abordagens para associar arquivos CSS ao seu módulo. Os aplicativos GWT modernos geralmente usam uma combinação de CssResource e UiBinder. Estamos usando apenas a primeira abordagem em nossos exemplos.

  • Usando uma tag <link> na página HTML do host.

  • Usando o elemento <stylesheet> no arquivo XML do módulo.

  • Usando um CssResource contido dentro de um ClientBundle.

  • Usando um elemento <ui: style> embutido em um UiBinder modelo.

Exemplo GWT CSS

Este exemplo irá guiá-lo através de etapas simples para aplicar diferentes regras CSS em seu widgest GWT. Vamos ter o Eclipse IDE em funcionamento junto com o plug-in GWT e seguir as etapas a seguir para criar um aplicativo GWT -

Degrau Descrição
1 Crie um projeto com o nome HelloWorld em um pacote com.tutorialspoint conforme explicado no capítulo GWT - Criar aplicativo .
2 Modifique HelloWorld.gwt.xml , HelloWorld.css , HelloWorld.html e HelloWorld.java conforme explicado abaixo. Mantenha o resto dos arquivos inalterados.
3 Compile e execute o aplicativo para verificar o resultado da lógica implementada.

A seguir está o conteúdo do descritor do módulo modificado src/com.tutorialspoint/HelloWorld.gwt.xml.

<?xml version = "1.0" encoding = "UTF-8"?>
<module rename-to = 'helloworld'>
   <!-- Inherit the core Web Toolkit stuff.                        -->
   <inherits name = 'com.google.gwt.user.User'/>

   <!-- Inherit the default GWT style sheet.                       -->
   <inherits name = 'com.google.gwt.user.theme.clean.Clean'/>

   <!-- Specify the app entry point class.                         -->
   <entry-point class = 'com.tutorialspoint.client.HelloWorld'/>

   <!-- Specify the paths for translatable code                    -->
   <source path = 'client'/>
   <source path = 'shared'/>

</module>

A seguir está o conteúdo do arquivo de folha de estilo modificado war/HelloWorld.css.

body {
   text-align: center;
   font-family: verdana, sans-serif;
}

h1 {
   font-size: 2em;
   font-weight: bold;
   color: #777777;
   margin: 40px 0px 70px;
   text-align: center;
}

.gwt-Button { 
   font-size: 150%; 
   font-weight: bold;
   width:100px;
   height:100px;
}

.gwt-Big-Text { 
   font-size:150%;
}

.gwt-Small-Text { 
   font-size:75%;
}

A seguir está o conteúdo do arquivo host HTML modificado war/HelloWorld.html para acomodar dois botões.

<html>
   <head>
      <title>Hello World</title>
      <link rel = "stylesheet" href = "HelloWorld.css"/>
      <script language = "javascript" src = "helloworld/helloworld.nocache.js">
      </script>
   </head>

   <body>
      <div id = "mytext"><h1>Hello, World!</h1></div>
      <div id = "gwtGreenButton"></div>
      <div id = "gwtRedButton"></div>
   </body>
</html>

Vamos ter o seguinte conteúdo do arquivo Java src/com.tutorialspoint/HelloWorld.java que cuidará da adição de dois botões em HTML e aplicará o estilo CSS personalizado.

package com.tutorialspoint.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.RootPanel;

public class HelloWorld implements EntryPoint {
   public void onModuleLoad() {
     
   // add button to change font to big when clicked.
   Button Btn1 = new Button("Big Text");
   Btn1.addClickHandler(new ClickHandler() {
      public void onClick(ClickEvent event) {
         RootPanel.get("mytext").setStyleName("gwt-Big-Text");
      }
   });

   // add button to change font to small when clicked.
   Button Btn2 = new Button("Small Text");
   Btn2.addClickHandler(new ClickHandler() {
      public void onClick(ClickEvent event) {
         RootPanel.get("mytext").setStyleName("gwt-Small-Text");
      }
   });

   RootPanel.get("gwtGreenButton").add(Btn1);
   RootPanel.get("gwtRedButton").add(Btn2);
   }
}

Quando você estiver pronto com todas as alterações feitas, vamos compilar e rodar o aplicativo em modo de desenvolvimento como fizemos no capítulo GWT - Criar Aplicativo . Se tudo estiver bem com sua aplicação, isso produzirá o seguinte resultado -

Agora tente clicar nos dois botões exibidos e observe "Hello, World!" texto que muda constantemente de fonte ao clicar nos dois botões.