Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GUI上的按钮有什么问题_Java_Swing_Jbutton_Jtree - Fatal编程技术网

Java GUI上的按钮有什么问题

Java GUI上的按钮有什么问题,java,swing,jbutton,jtree,Java,Swing,Jbutton,Jtree,我已经在这个GUI的第三个面板上创建了一个next按钮。这个面板有一个JTree,上面有一个可折叠的复选框,但是当我打开树时按钮消失,当我选中树上的一个复选框时按钮重新出现。我想阻止按钮消失,如果你执行代码并继续到第三个面板,你会明白我在说什么,有什么办法解决这个问题吗 import javax.swing.*; import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.Color; import java

我已经在这个GUI的第三个面板上创建了一个next按钮。这个面板有一个JTree,上面有一个可折叠的复选框,但是当我打开树时按钮消失,当我选中树上的一个复选框时按钮重新出现。我想阻止按钮消失,如果你执行代码并继续到第三个面板,你会明白我在说什么,有什么办法解决这个问题吗

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();
            }
        });

    }
}

您正在将
panelThird
中的组件添加到同一位置

panelThird.add(scrollPane);
panelThird.add(btNextThree);
将其更改为例如

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

另外,请在以后的一些行中删除
滚动窗格
窗格第三个
的第二个添加项。实际上,通过使用
null
布局,您正在使任务变得更加困难。Swing设计用于布局管理器,并尝试这样做,否则您将一路与框架抗争。(除了GUI不能很好地处理大小调整、翻译、不同主题等)

null
layouts nuff说(除了,这是我第二次看到这段代码,但来自不同的用户)
null
layouts,更准确地说。null布局设置在其他两个面板上,即使我改变了它不能解决问题如果我没有错,这是你第四次用类似的问题展示这段代码,第四次建议你使用布局管理器,至少是第三个用户名…我很抱歉,但是你真的没有帮自己…
btNextThree.setBounds(25024010020)不会有帮助是的,这是可行的,唯一的问题是“下一步”按钮的高度现在很大,我如何降低高度?@ChaudhryCh我不知道你希望最终的布局是什么样子。一种可能是使用其他布局管理器,例如垂直
BoxLayout
。另一种方法是将按钮放置在
JPanel
中,然后将其放置在
面板第三个
中。(并使用辅助面板的适当布局管理器处理按钮放置)。阅读版面将有助于您选择合适的版面管理器以及如何使用它们。@kiheru,此人在他之前的5-6篇文章中多次得到使用版面管理器的建议,这些文章使用了3个不同的用户ID。