两个组件,一个具有设置的宽度
Two Components, one with a set width
这似乎是一个完全初级的问题,但我是 swing 的初学者。我有一个可调整大小的 JFrame,左边是 JPanel,右边是 JTabbedPane。我希望 JTabbedPane 具有恒定宽度并增加高度以匹配 JFrame 高度。 JPanel 应填充 JFrame 的剩余宽度和高度。我在这里做错了什么?
public Example()
{
f = new JFrame();
f.setResizable(true);
f.setPreferredSize(new Dimension(1000, 800));
f.setLayout(new FlowLayout());
JPanel viewerPanel = new JPanel()
{
@Override
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(Color.RED);
System.out.println("W:" + getSize().width + ", H:" + getSize().height);
g2d.fillRect(0, 0, getSize().width, getSize().height);
}
};
f.getContentPane().add(viewerPanel);
JTabbedPane tabs = new JTabbedPane();
tabs.setSize(400, f.getHeight());
tabs.addTab("Tab1", new JLabel("Content1"));
tabs.addTab("Tab2", new JLabel("Content2"));
tabs.addTab("Tab3", new JLabel("Content3"));
tabs.addTab("Tab4", new JLabel("Content4"));
f.getContentPane().add(tabs);
f.pack();
f.setVisible(true);
}
最好的方法是让布局完成工作并设置首选或最小尺寸:
尝试使用 BorderLayout 并将面板添加到中心(高度和宽度都增加)并将 tabbedPane 添加到右侧(高度增加),同时为 tabbedPane 设置首选或最小尺寸
你的 tabbedPane 应该总是有相同的,而面板会根据留给他的大小而增长
这似乎是一个完全初级的问题,但我是 swing 的初学者。我有一个可调整大小的 JFrame,左边是 JPanel,右边是 JTabbedPane。我希望 JTabbedPane 具有恒定宽度并增加高度以匹配 JFrame 高度。 JPanel 应填充 JFrame 的剩余宽度和高度。我在这里做错了什么?
public Example()
{
f = new JFrame();
f.setResizable(true);
f.setPreferredSize(new Dimension(1000, 800));
f.setLayout(new FlowLayout());
JPanel viewerPanel = new JPanel()
{
@Override
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(Color.RED);
System.out.println("W:" + getSize().width + ", H:" + getSize().height);
g2d.fillRect(0, 0, getSize().width, getSize().height);
}
};
f.getContentPane().add(viewerPanel);
JTabbedPane tabs = new JTabbedPane();
tabs.setSize(400, f.getHeight());
tabs.addTab("Tab1", new JLabel("Content1"));
tabs.addTab("Tab2", new JLabel("Content2"));
tabs.addTab("Tab3", new JLabel("Content3"));
tabs.addTab("Tab4", new JLabel("Content4"));
f.getContentPane().add(tabs);
f.pack();
f.setVisible(true);
}
最好的方法是让布局完成工作并设置首选或最小尺寸:
尝试使用 BorderLayout 并将面板添加到中心(高度和宽度都增加)并将 tabbedPane 添加到右侧(高度增加),同时为 tabbedPane 设置首选或最小尺寸
你的 tabbedPane 应该总是有相同的,而面板会根据留给他的大小而增长