来自不同类的 Java 组件

Posted

技术标签:

【中文标题】来自不同类的 Java 组件【英文标题】:Java components from different class 【发布时间】:2014-04-13 18:32:11 【问题描述】:

我正在尝试从我的程序中的不同类创建组件并将它们实现到我的 JFrame 中。

我创建了一个 JTabbedPane,每个选项卡代表一个类。每个选项卡的所有组件都放置在它们各自的选项卡中。

//creates the JTabbedPane, and the panels. object creation.
//panelx corisponds to the tab number as well. tabbs are counted from left to right. 
tabpane1 = new JTabbedPane();
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
JPanel panel3 = new JPanel();
JPanel panel4 = new JPanel();
JPanel panel5 = new JPanel();
JPanel panel6 = new JPanel();

JLabel searchlabel1 = new JLabel("hey");
JLabel searchlabel2 = new JLabel("hi");

panel1.add(searchlabel1);
panel1.add(searchlabel2); 

//SearchFlight searchflightComp = new SearchFlight();

 tabpane1.addTab("Search Flight", panel1);
 tabpane1.addTab("Select Flight", panel2);
 tabpane1.addTab("Flight Price", new JLabel("This is tab 1ffff")); 
 tabpane1.addTab("Book Ticket", new JLabel("This is tab 1fff"));
 tabpane1.addTab("Book Ticket", new JLabel("This is tab fs1"));
 tabpane1.addTab("Payment", new JLabel("This is tabgf 1"));
 tabpane1.addTab("Booking Summary", new JLabel("This is tabgf 1"));
 //added the JTabbedPane to JFrame. 
 frame.getContentPane().add(tabpane1);

这行得通。我现在只真正使用第一个选项卡来了解它的工作原理等。但我什至不知道如何开始。我会在另一个类中创建一个面板然后返回它吗?或扩展JFrame?

谢谢大家!

【问题讨论】:

不清楚你在问什么,你想只使用 one 包含所有组件的标签吗? 如果您不需要其他选项卡,为什么不简单地将最后一行更改为frame.getContentPane().add(panel1); 【参考方案1】:

也许你可以从 JComponent 扩展?并像他们here那样做吗?

【讨论】:

【参考方案2】:

我假设你指的是这个注释行:

//SearchFlight searchflightComp = new SearchFlight();

您可以使 SearchFlight 成为 JPanel 的子类,或者更好地创建一个控制器,为该选项卡创建一个 JPanel 并返回它,例如

SearchFlight searchflightComp = new SearchFlight();
tabpane1.addTab( searchflightComp.getName(), searchflightComp.buildPanel() );

作为一般提示,您应该阅读 MVC 模式。 这可能会在一定程度上帮助您:The MVC pattern and SWING

【讨论】:

以上是关于来自不同类的 Java 组件的主要内容,如果未能解决你的问题,请参考以下文章