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

JButton actionListener
EN

Stack Overflow用户
提问于 2011-09-09 23:57:39
回答 3查看 1.8K关注 0票数 2

我编写了一个有按钮和JList的JFrame,当我点击按钮时,JList列表就会显示出来。相反,它不会显示任何内容,除非我单击maximaze或刷新框架。按钮侦听器类

代码语言:javascript
复制
class b0listener implements ActionListener{

                @Override
                public void actionPerformed(ActionEvent e) {
                    // TODO Auto-generated method stub
                    MessageList.removeAll();    
                    Messages = new JList(lireRepertoire("C:/Documents and Settings/Java/eclipse data file"));


                    Pane =new JScrollPane(Messages);
                    Pane.setPreferredSize(new Dimension(400,400));
                    //Messages.setMaximumSize(MessageList.getPreferredSize()) ;
                    MessageList.add( Pane);

                }}

类构造函数代码

代码语言:javascript
复制
Fframe.setTitle("Boite Message");
        Fframe.setSize(800,300);
        Fframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Fframe.setVisible(true);    
        //  panels Layout 

        ButtonMenu.setLayout(new BoxLayout(ButtonMenu, BoxLayout.Y_AXIS));//Jpanel
        MessageList.setLayout(new FlowLayout());//JPanel
        ButtonMenu.setBackground(Color.LIGHT_GRAY);
        MessageList.setBackground(Color.orange);
        MessageList.setPreferredSize(new Dimension(400, 400));

                Fframe.add(ButtonMenu,BorderLayout.WEST);
        Fframe.add(MessageList,BorderLayout.CENTER);
        ButtonMenu.add(b0);
                b0.addActionListener(new b0listener());
                 Pane =new JScrollPane(Messages);
        Messages.setPreferredSize(new Dimension(800,250));
        //Pane.setMaximumSize(MessageList.getSize()) ;
        MessageList.add( Pane);

我已经将Jpanel和Jframe、button声明为类成员

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-10 00:56:44

首先,学习并使用正确的Java命名约定。变量不应以大写字符开头。

当从面板中动态添加/删除组件时,需要重新验证()面板:

代码语言:javascript
复制
messageList.add( pane); 
messageList.revalidate();
messageList.repaint();
票数 4
EN

Stack Overflow用户

发布于 2011-09-10 01:05:22

与其更改框架中的组件,不如考虑一下您的设计,如果确实有必要这样做的话。

在您的示例中,唯一的效果是更改JList中的内容。因此,您不应该重新构建GUI,而应该使用视图-模型分离,并且只更改模型内容。您可以在How to Use Lists - Adding Items to and Removing Items from a List中找到一个示例。

票数 4
EN

Stack Overflow用户

发布于 2011-09-10 00:36:16

打电话

代码语言:javascript
复制
// Add the component againt to appear in the interface.
Fframe.add(MessageList,BorderLayout.CENTER);
Frame.repaint();

这是因为,如果将组件添加到框架中,调用repaint将使用接口刷新基础结构。

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

https://stackoverflow.com/questions/7364345

复制
相关文章

相似问题

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