返回信息流JTabbedPane中的函数public Component getTabComponentAt(int index)使用一直报错java.lang.NullPointerException,不知道是怎么回事。代码是网上找的,只加了一句,试验getTabComponentAt函数。
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.event.ChangeListener;
import javax.swing.event.ChangeEvent;
import javax.swing.JTabbedPane;
public class TabbedPaneFrame extends JFrame implements ChangeListener {
private JPanel productPanel;
private JPanel userPanel;
private JTabbedPane tabbedPane;
public TabbedPaneFrame() {
super("JTabbedPane的事件监听");
init();
}
public void init() {
setSize(500,300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
productPanel = new JPanel();
productPanel.setName("商品信息面板"); //为面板设置名称
userPanel = new JPanel();
userPanel.setName("用户信息面板");
tabbedPane = new JTabbedPane();
tabbedPane.add("商品信息", productPanel); //将面板添加到选项卡中
tabbedPane.add("用户信息", userPanel);
tabbedPane.addChangeListener(this); //添加监听器
this.getContentPane().add(tabbedPane); //将选项卡加入到窗口中
this.setVisible(true);
}
/**
* 实现ChangeListener接口中的stateChanged方法
* 当侦听器的目标已更改其状态时调用
*/
public void stateChanged(ChangeEvent e) {
String name = tabbedPane.getSelectedComponent().getName();
System.out.println("你选中的面板名称 === " + name);
tabbedPane.getTabComponentAt(0).setBackground(Color.black);
}
public static void main(String[] args)
{
new TabbedPaneFrame();
}
}
报错如下:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at xd.src.TabbedPaneFrame.stateChanged(TabbedPaneFrame.java:44)
at javax.swing.JTabbedPane.fireStateChanged(Unknown Source)
at javax.swing.JTabbedPane$ModelListener.stateChanged(Unknown Source)
at javax.swing.DefaultSingleSelectionModel.fireStateChanged(Unknown Source)
at javax.swing.DefaultSingleSelectionModel.setSelectedIndex(Unknown Source)
at javax.swing.JTabbedPane.setSelectedIndexImpl(Unknown Source)
at javax.swing.JTabbedPane.setSelectedIndex(Unknown Source)
at javax.swing.plaf.basic.BasicTabbedPaneUI$Handler.mousePressed(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
这是一条镜像帖。来源:北邮人论坛 / java / #21761同步于 2012/3/16
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
JTabbedPane函数问题
shoren
2012/3/16镜像同步1 回复
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复