请看下面的代码。
package normal;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class MainForm extends JFrame implements ComponentListener
{
private JTabbedPane tab;
private InsertForm insertForm;
private UpdateDeleteForm updateDelete;
private SearchForm searchForm;
public MainForm()
{
tab = new JTabbedPane();
insertForm = new InsertForm();
updateDelete = new UpdateDeleteForm();
searchForm = new SearchForm();
//Creating the main window
tab.add(insertForm,"Insert");
tab.add(updateDelete,"Update/Delete");
tab.add(searchForm,"Search");
tab.addChangeListener(new TabChangeWork());
getContentPane().add(tab);
// this.setSize(500,500);
this.setTitle("My Phone Book App");
this.setResizable(false);
this.pack();
this.validate();
this.setLocationRelativeTo(null);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
@Override
public void componentResized(ComponentEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void componentMoved(ComponentEvent e)
{
System.out.println("X Location: "+this.getX());
}
@Override
public void componentShown(ComponentEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void componentHidden(ComponentEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
private class TabChangeWork implements ChangeListener
{
@Override
public void stateChanged(ChangeEvent e)
{
JTabbedPane tabSource = (JTabbedPane)e.getSource();
int index = tabSource.getSelectedIndex();
System.out.println("Tab Changed to: "+tabSource.getTitleAt(index));
if(tabSource.getTitleAt(index).equals("Update/Delete"))
{
updateDelete.addNames();
}
}
}
}在这里,ComponentListener不能正常工作,因为"ComponentMoved“方法中的操作没有发生。如果这个被移动了,我正在尝试获取JFrame的新坐标。为什么它不工作?请帮帮我!!
发布于 2012-08-12 23:44:33
您在代码中的任何位置都没有将注册到ComponentListener ...
像这样……
component_to_monitor.addComponentListener(this);发布于 2012-08-12 23:35:23
您尚未调用addComponentListener anywhere。
如果您希望在JFrame中注册这样的监听程序,则可以添加:
addComponentListener(this);或者,对于子组件,例如searchForm:
searchForm.addComponentListener(this);发布于 2012-08-12 23:37:43
您的MainForm是一个ComponentListener。因此,它将监听组件事件--但前提是您告诉它在哪里监听。监听器不会自动监听任何内容。他们一开始是耳聋的。
查看要监视其移动的组件,并使用该组件的addComponentListner方法注册主框架。像component.addComponentListener(this);这样的东西
https://stackoverflow.com/questions/11923393
复制相似问题