JDialog aparece pequeno no canto da tela [RESOLVIDO]
4 respostas
moacirjava
Galera, criei um JFrame no netbeans e adicionei um JDialog. Quero fazer com que o JDialog impeça de o usuário clicar no frame atrás do JDialog.
Pra isso tem um método o modal, só que quando configuro esse método na palheta do netbeans o JDialog já aparece pequeno no canto da tela, como eu faço pra ele aparecer no centro da tela e com tamanho descente?
Na mesma janela vc pode setar o tamnho e a localização do jDialog na sua tela…na configuração de "Bounds"
que recebe 4 parâmetros, a localkização “x” ,“y”, “largura”, “altura” ou vc pode escrever a linha de código:
jDialog.setBounds(15,15,55,100); //parâmetros ficam a seu critério
tRuNkSnEt
Você também pode usar o metodo setSize(int width, int height) para configurar o tamanho da tela ou o metodo pack() que ajusta a tela de acordo com seus componentes.
moacirjava
Então, mas eu vou chamar esse métodos onde?
Esse é o código do meu JFrame:
importjava.awt.Dimension;importjava.awt.Toolkit;publicclassTelaPrincipalextendsjavax.swing.JFrame{privatedoublewidth=0;privatedoubleheight=0;privateDimensiondimensao=Toolkit.getDefaultToolkit().getScreenSize();publicTelaPrincipal(){initComponents();width=dimensao.getWidth();height=dimensao.getHeight()-32;setBounds(0,0,(int)width,(int)height);}//DAQUI PRA BAIXO É O NETBEANS QUEM GERA@SuppressWarnings("unchecked")// <editor-fold defaultstate="collapsed" desc="Generated Code">privatevoidinitComponents(){jDcadDizimo=newjavax.swing.JDialog();jTabbedPane1=newjavax.swing.JTabbedPane();jTabbedPane2=newjavax.swing.JTabbedPane();jTabbedPane3=newjavax.swing.JTabbedPane();jTabbedPane4=newjavax.swing.JTabbedPane();jMenuBar1=newjavax.swing.JMenuBar();jMenu1=newjavax.swing.JMenu();iControleDizimo=newjavax.swing.JMenuItem();jMenu2=newjavax.swing.JMenu();jMenu3=newjavax.swing.JMenu();jDcadDizimo.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);jDcadDizimo.setCursor(newjava.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));jDcadDizimo.setResizable(false);jDcadDizimo.getContentPane().setLayout(newjava.awt.GridLayout(1,0));jTabbedPane1.setToolTipText("Dizimo");jTabbedPane1.addTab("Dízimo",jTabbedPane2);jTabbedPane1.addTab("Batistérios",jTabbedPane3);jTabbedPane1.addTab("Casamentos",jTabbedPane4);jDcadDizimo.getContentPane().add(jTabbedPane1);jDcadDizimo.getAccessibleContext().setAccessibleParent(this);setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);setResizable(false);getContentPane().setLayout(newjava.awt.GridBagLayout());jMenu1.setText("Dízimo");iControleDizimo.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F1,0));iControleDizimo.setText("Controle do Dízimo");iControleDizimo.setToolTipText("Abre controle do Dízimo");iControleDizimo.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(java.awt.event.ActionEventevt){iControleDizimoActionPerformed(evt);}});jMenu1.add(iControleDizimo);jMenuBar1.add(jMenu1);jMenu2.setText("Batistérios");jMenuBar1.add(jMenu2);jMenu3.setText("Casamentos");jMenuBar1.add(jMenu3);setJMenuBar(jMenuBar1);pack();}// </editor-fold>privatevoidiControleDizimoActionPerformed(java.awt.event.ActionEventevt){//ATÉ AQUI//Posiciona o JDialog quase no centro da tela. jDcadDizimo.setBounds(50,50,((int)width-100),((int)height-100));jDcadDizimo.setVisible(true);jDcadDizimo.setModal(true);}// Variables declaration - do not modifyprivatejavax.swing.JMenuItemiControleDizimo;privatejavax.swing.JDialogjDcadDizimo;privatejavax.swing.JMenujMenu1;privatejavax.swing.JMenujMenu2;privatejavax.swing.JMenujMenu3;privatejavax.swing.JMenuBarjMenuBar1;privatejavax.swing.JTabbedPanejTabbedPane1;privatejavax.swing.JTabbedPanejTabbedPane2;privatejavax.swing.JTabbedPanejTabbedPane3;privatejavax.swing.JTabbedPanejTabbedPane4;// End of variables declaration}
moacirjava
Bom o jeito que encontrei foi o seguinte...
Esse é o evento do menu que aciona o jdialog, dentro dele eu chamo um método que configura com o jdialog.
private void iControleDizimoActionPerformed(java.awt.event.ActionEvent evt) {
//Posiciona o JDialog quase no centro da tela.
cria(jDcadDizimo);
}
private void cria(JDialog j){
j.setModal(true);
j.setBounds(50, 50, ((int) width - 100), ((int) height - 100));
j.setVisible(true);
j.pack();
}