2013-08-14 2 views
1

Я создал следующую кнопку на третьей панели этого графического интерфейса. На этой панели есть JTree с накладным флажком, но когда я открываю дерево, кнопка исчезает, когда я устанавливаю флажок на дереве, кнопка снова появляется. Я хочу остановить кнопку «Исчезновение». Если вы выполните код и перейдете к третьей панели с деревом, вы поймете, о чем я говорю, любые идеи, как это исправить?Что не так с кнопкой на GUI

import javax.swing.*; 
import java.awt.BorderLayout; 
import java.awt.CardLayout; 
import java.awt.Color; 
import java.awt.CardLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.ImageIcon; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JScrollPane; 
import javax.swing.JTree; 
import javax.swing.tree.DefaultMutableTreeNode; 
import javax.swing.tree.DefaultTreeModel; 

public class MyWizard { 

    private JFrame frame = new JFrame("My Wizard"); 
    private JPanel panelContainer = new JPanel(); 
    private JPanel panelFirst = new JPanel(); 
    private JPanel panelSecond = new JPanel(); 
    private JPanel panelThird = new JPanel(); 
    private JButton btNext = new JButton("Next"); 
    private JButton btNextTwo = new JButton("Next"); 
    private JButton btNextThree = new JButton("Next"); 
    private JRadioButton btLdap, btKerbegos, btSpnego, btSaml2; 
    private JCheckBox btSan, btNFS, btYUMserver; 
    private CardLayout c1 = new CardLayout(); 
    private JScrollPane scrollPane; 
    private JLabel lblPicture, lblPictureTwo; 
    DefaultMutableTreeNode root = new DefaultMutableTreeNode("FMW Components"); 

    public MyWizard() { 
     // tree code 
     final DefaultMutableTreeNode accessibility = add(root, "DB Tier", true); 
     add(accessibility, "RAC", false); 
     add(accessibility, "Gateways", false); 
     add(accessibility, "Datavault", false); 
     add(accessibility, "Agent", false); 
     add(accessibility, "Custom Databases", false); 
     root.add(accessibility); 

     final DefaultMutableTreeNode browsing = new DefaultMutableTreeNode("APP Tier"); 
     add(browsing, "IDM (OID, OVD)", false); 
     add(browsing, "IAM (Access Manager)", false); 
     add(browsing, "BIEE", false); 
     add(browsing, "Forms and Reports", false); 
     add(browsing, "Discoverer", false); 
     add(browsing, "Apps", false); 
     add(browsing, "Apex(4.2.1)", false); 
     root.add(browsing); 

     final DefaultTreeModel treeModel = new DefaultTreeModel(root); 
     final JTree tree = new JTree(treeModel); 

     final CheckBoxNodeRenderer renderer = new CheckBoxNodeRenderer(); 
     tree.setCellRenderer(renderer); 

     final CheckBoxNodeEditor editor = new CheckBoxNodeEditor(tree); 
     tree.setCellEditor(editor); 
     tree.setEditable(true); 
     scrollPane = new JScrollPane(tree); 
     // tree code ends 

     panelFirst.setLayout(null); 
     panelSecond.setLayout(null); 
     panelThird.setLayout(new BorderLayout()); 

     panelContainer.setLayout(c1); 
     panelFirst.add(btNext); 
     panelSecond.add(btNextTwo); 
     panelThird.add(scrollPane); 
     panelThird.add(btNextThree); 

     panelFirst.setBackground(Color.white); 
     panelSecond.setBackground(Color.white); 

     panelContainer.add(panelFirst, "1"); 
     panelContainer.add(panelSecond, "2"); 
     panelContainer.add(panelThird, "3"); 
     c1.show(panelContainer, "1"); 
     panelThird.add(scrollPane); 

     btNext.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent arg0) { 
       c1.show(panelContainer, "2"); 

      } 

     }); 

     btNextTwo.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent arg0) { 
       c1.show(panelContainer, "3"); 

      } 

     }); 
     RadioButtons(); 
     Button(); 
     Buttons(); 
     CheckList(); 
     groupButton(); 
     ButtonsTwo(); 
     Image(); 
     frame.add(panelContainer); 
     frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
     frame.pack(); 
     frame.setSize(400, 310); 
     frame.setVisible(true); 
    } 

    public void RadioButtons() { 
     btLdap = new JRadioButton("Ldap"); 
     btLdap.setBounds(60, 85, 100, 20); 
     btLdap.setBackground(Color.white); 
     panelFirst.add(btLdap); 

     btKerbegos = new JRadioButton("Kerbegos"); 
     btKerbegos.setBounds(60, 115, 100, 20); 
     btKerbegos.setBackground(Color.white); 
     panelFirst.add(btKerbegos); 

     btSpnego = new JRadioButton("Spnego"); 
     btSpnego.setBounds(60, 145, 100, 20); 
     btSpnego.setBackground(Color.white); 
     panelFirst.add(btSpnego); 

     btSaml2 = new JRadioButton("Saml2"); 
     btSaml2.setBounds(60, 175, 100, 20); 
     btSaml2.setBackground(Color.white); 
     panelFirst.add(btSaml2); 
    } 

    public void Button() { 
     btNext.setBounds(250, 240, 100, 20); 
    } 

    public void CheckList() { 
     btSan = new JCheckBox("San"); 
     btSan.setBounds(60, 85, 100, 20); 
     btSan.setBackground(Color.white); 
     panelSecond.add(btSan); 

     btNFS = new JCheckBox("NFS"); 
     btNFS.setBounds(60, 115, 100, 20); 
     btNFS.setBackground(Color.white); 
     panelSecond.add(btNFS); 

     btYUMserver = new JCheckBox("Spnego"); 
     btYUMserver.setBounds(60, 145, 100, 20); 
     btYUMserver.setBackground(Color.white); 
     panelSecond.add(btYUMserver); 
    } 

    public void Buttons() { 
     btNextTwo.setBounds(250, 240, 100, 20); 
    } 

    public void ButtonsTwo() { 
     btNextThree.setBounds(250, 240, 100, 20); 
    } 

    public void Image() { 
     ImageIcon image = new ImageIcon("iconpic.png"); 
     lblPicture = new JLabel(image); 
     lblPicture.setBounds(140, 5, 330, 270); 
     panelFirst.add(lblPicture); 

     ImageIcon imageTwo = new ImageIcon("iconpic.png"); 
     lblPictureTwo = new JLabel(imageTwo); 
     lblPictureTwo.setBounds(140, 5, 330, 270); 
     panelSecond.add(lblPictureTwo); 
    } 

    private void groupButton() { 

     ButtonGroup bg1 = new ButtonGroup(); 

     bg1.add(btLdap); 
     bg1.add(btKerbegos); 
     bg1.add(btSpnego); 
     bg1.add(btSaml2); 

    } 

    private static DefaultMutableTreeNode add(final DefaultMutableTreeNode parent, final String text, 
      final boolean checked) { 
     final CheckBoxNode data = new CheckBoxNode(text, checked); 
     final DefaultMutableTreeNode node = new DefaultMutableTreeNode(data); 
     parent.add(node); 
     return node; 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       new MyWizard(); 
      } 
     }); 

    } 
} 
+0

'null' layouts nuff said (за исключением того, что это второй раз, когда я видел этот код, но из другого пользователь) – MadProgrammer

+0

'null' layouts, а точнее. – kiheru

+0

нулевой макет установлен на других двух панелях. Даже если я изменю, что он не исправит проблему –

ответ

0

Вы добавляете компоненты в panelThird к одной и той же позиции.

panelThird.add(scrollPane); 
panelThird.add(btNextThree); 

Изменение, что, например,

panelThird.add(scrollPane, BorderLayout.CENTER); 
panelThird.add(btNextThree, BorderLayout.SOUTH); 

Кроме того, удалить второе добавление scrollPane к panelThird несколько строк позже. И действительно, вы делаете задачу сложнее, чем должно быть, используя макеты null. Swing предназначен для использования с менеджерами компоновки и пытается сделать это, иначе вы будете бороться с картой полностью. (Помимо наличия графического интерфейса, который не имеет отношения к изменению размера, переводам, различной тематике, ...)

+0

Да, это работает, единственная проблема заключается в том, что высота следующей кнопки теперь массивная, как я могу уменьшить высоту? –

+0

Ширина массивная Мне удалось исправить высоту –

+0

@ChaudhryCh Я не знаю, что вы хотите, чтобы окончательный макет выглядел. Одна из возможностей - использовать другой менеджер компоновки, например вертикальный «BoxLayout». Другой помещает кнопку внутри 'JPanel' и помещает ее в' panelThird'. (И иметь дело с размещением кнопок с соответствующим менеджером макетов для вспомогательной панели). Чтение макета [tutorial] (http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html) поможет вам выбрать подходящих менеджеров макетов и как их использовать. – kiheru

Смежные вопросы