当JFrame.setvisible设置为true时,有人可以解释我的类错误,我的JTabbedPane没有显示吗?
是的,程序的主要方法(我不会在这里)使用事件派发线程来启动ArionGUI。
这是我的JFrame代码:
import javax.swing.*;
public class ArionGUI extends JFrame {
public ArionGUI() {
// Set up GUI frame for Arion
JFrame arionFrame = new JFrame("Arion v 0.01");
// Add Arion Tabbed Pane
arionFrame.getContentPane().add(new ArionTabbedPane());
// Terminate the application when closed
arionFrame.setDefaultCloseOperation(EXIT_ON_CLOSE);
// Set the size of the frame
arionFrame.setSize(500, 500);
// Center window
arionFrame.setLocationRelativeTo(null);
// Prevent user from resizing window
arionFrame.setResizable(false);
// Make Arion frame visible on screen
arionFrame.setVisible(true);
}
}
这是我的JTabbedPane代码:
import javax.swing.JTabbedPane;
import javax.swing.JLabel;
import javax.swing.JComponent;
public class ArionTabbedPane extends JComponent {
JTabbedPane arionTabbedPane;
public ArionTabbedPane() {
arionTabbedPane = new JTabbedPane(JTabbedPane.TOP);
arionTabbedPane.addTab("Characters", new JLabel("This is the characterz tab"));
arionTabbedPane.addTab("Miscellaneous", new JLabel("This is the miscellaneous tab"));
add(arionTabbedPane);
}
}
答案 0 :(得分:3)
因为ArionTabbedPane实际上不是选项卡式窗格。这是一个包装。所以你只是在你的JFrame中添加一个组件而不是TabbedPane。如果您希望能够将ArionTabbed窗格添加到JFrame,则需要扩展JTabbedPane。如果你想要添加Pane它的包装,那么你需要一个函数来返回对它的内部选项卡式窗格的引用,你需要将它添加到你的JFrame中。像这样:
ArionTabbedPane tabbedPane = new ArionTabbedPane();
arionFrame.getContentPane().add(tabbedPane.getPane());
其中ArionTabbedPane.getPane()是这样的:
Public JTabbedPane getPane() {
return arionTabbedPane;
}
编辑:嗯......你能做的另一件事就是如果你不想做其中任何一件事就是让ArionTabbedPane扩展JPanel而不是JComponent。 Java知道JPanel是一个容器,所以当它添加到你的JFrame时,它应该检查JPanel里面要显示的东西。你唯一需要改变的就是让ArionTabbedPane扩展JPanel而不是JComponent。
再次编辑,如果你扩展JTabbedPane,那么你需要删除内部的JTabbedPane。新的ArionTabbedPane看起来应该是这样的:
公共类ArionTabbedPane扩展了JTabbedPane {
public ArionTabbedPane() {
super(JTabbedPane.TOP); // Calls JTabbedPane's constructor.
this.addTab("Characters", new JLabel("This is the characterz tab"));
this.addTab("Miscellaneous", new JLabel("This is the miscellaneous tab"));
}
}
真的很简单。
答案 1 :(得分:2)