首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java JRadioButton

Java JRadioButton
EN

Stack Overflow用户
提问于 2013-04-01 21:14:00
回答 1查看 845关注 0票数 0

当我点击文件并点击新建,新的面板出现在屏幕上,当我想要改变JRadioBox状态来改变标签状态时,标签状态会改变,但面板也会消失:(

代码语言:javascript
复制
public class MainClass {

    public static void main(String[] args) {
        new MainFrame();
    }
}

class Toolbar extends JPanel {

    private JRadioButton Status1;
    private JRadioButton Status2;
    private ButtonGroup radioButtonGroup;

    public Toolbar() {
        super();
        setLayout(new FlowLayout());
        Status1 = new JRadioButton("Status1");
        Status2 = new JRadioButton("Status2");

        radioButtonGroup = new ButtonGroup();
        radioButtonGroup.add(Status2);
        radioButtonGroup.add(Status1);

        Status1.addItemListener(new ItemListener() {

            @Override
            public void itemStateChanged(ItemEvent e) {
                MainFrame m = new MainFrame();
                m.l.setText("Status1");
            }
        });
        Status2.addItemListener(new ItemListener() {

            @Override
            public void itemStateChanged(ItemEvent e) {
                MainFrame m = new MainFrame();
                m.l.setText("Status2");
            }
        });

        add(Status1);
        add(Status2);
    }
}

 class Panel extends JPanel {

    public Panel() {
        super();
        setBackground(Color.MAGENTA);
    }

}

 class MenuBar extends JMenuBar {

    private JMenu menu;
    private JMenuItem fileItems;
    public boolean panel = false;

    public MenuBar() {
        super();
        menu = new JMenu("File");
        add(menu);
        fileItems = new JMenuItem("New");
        menu.add(fileItems);
        fileItems.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                MainFrame mf = new MainFrame();
                Panel p = new Panel();
                mf.addPanel(p);
                mf.add(new Toolbar(), BorderLayout.NORTH);
                repaint();
            }
        });
    }

}

 class MainFrame extends JFrame {

    public static JLabel l;
    public MainFrame() {
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(400, 400);
        l = new JLabel("No Status");
        add(l, BorderLayout.SOUTH);
        MenuBar mb = new MenuBar();
        setJMenuBar(mb);
        setVisible(true);
    }

    public void addPanel(Panel p) {
        add(p, BorderLayout.CENTER);
    }

}
EN

回答 1

Stack Overflow用户

发布于 2013-04-01 21:25:49

不要到处制造新的MainFrames。只需创建一次,并维护一个句柄,以备需要时使用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15744180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档