我有点问题.我需要在JTabbedPane组件中的不同选项卡上使用两种不同类型的布局.这是代码:
MyPanel.java
import java.awt.*; import javax.swing.*; import java.util.*; public class myPanel extends JPanel{ myPanel(){ super(new GridLayout(1, 1)); JTabbedPane tabbedPane = new JTabbedPane(); myYear year = new myYear(); myDate mydate = new myDate(); String s_year = Integer.toString(myDate.year); tabbedPane.addTab(s_year,year); myMonth month = new myMonth(); tabbedPane.addTab(mydate.getMonth(),month); add(tabbedPane); tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); } }
年度窗格上的GridLayout()是必要的,因为它显示4x4个方格(每个月).但是当谈到月份窗格时,我需要使用JList组件,我想把它放在"西边界"上.我试过这样做:
package Lista8; import java.awt.*; import javax.swing.*; class myMonth extends JPanel{ myMonth(){ String[] data = {"oneone"}; JList month = new JList(data); month.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); month.setLayoutOrientation(JList.VERTICAL_WRAP); month.setVisibleRowCount(5); month.setPreferredSize(new Dimension(100,200)); add(month,BorderLayout.WEST); // HERE } }
但月份小组一直在中心.说实话,我不太明白布局是如何工作的
add(month,BorderLayout.WEST); // HERE
a的默认布局管理器JPanel
是a FlowLayout
.
如果要使用a BorderLayout
,则需要将面板的布局设置为a BorderLayout
.
myMonth() { setLayout( new BorderLayout() ); String[] data = {"oneone"}; ...
说实话,我不太明白布局是如何工作的
首先阅读布局管理器上的Swing教程.您可以找到每个布局管理器的工作代码,您可以下载和使用它们来学习基础知识.