来自不同类的 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 组件的主要内容,如果未能解决你的问题,请参考以下文章

具有相同类名的不同类在不同组件中单独导入,相互覆盖 - React

如何在 Java 中使用来自不同类的方法?

在Python中触发来自不同类的Tkinter事件

Java:当我使用extends关键字实现多重继承时,不同包的不同类中未访问受保护的方法

JAVA 不同类载入器命名空间的理解

C++ 重载 == 比较来自不同类的对象