[英]JButton actionListener
我编写了一个具有Button和JList的JFrame,当我点击Button时,将显示JList列表。 相反,它没有显示任何内容,除非我点击maximaze,或刷新框架。 按钮监听器类
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);
}}
类构造函数代码
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);
我已经将Jpanels和Jframe,按钮声明为类成员
首先,学习使用正确的Java命名约定。 变量不应以大写字符开头。
从面板动态添加/删除组件时,您需要重新验证()面板:
messageList.add( pane);
messageList.revalidate();
messageList.repaint();
您不应该更改框架内的组件,而应考虑您的设计以及是否有必要这样做。
在您的情况下,唯一的影响是更改JList
内的内容。 因此,您不应重建GUI,而应使用视图模型分离并仅更改模型内容。 您可以在如何使用列表 - 向列表中添加项目和从列表中删除项目中找到示例。
呼叫
// Add the component againt to appear in the interface.
Fframe.add(MessageList,BorderLayout.CENTER);
Frame.repaint();
这是因为,如果向框架添加组件,则调用repaint将使用该接口刷新底层结构。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.