1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java panel适应窗口_如何使JTabbedPane自动调整大小以适应页面尺寸?

java panel适应窗口_如何使JTabbedPane自动调整大小以适应页面尺寸?

时间:2019-05-25 10:59:13

相关推荐

java panel适应窗口_如何使JTabbedPane自动调整大小以适应页面尺寸?

我在JFrame中只有JTabbedPane. JTabbedPane将其尺寸设置为最大页面宽度/高度.

由于页面大小不同,是否可以在选择其他页面时强制JTabbedPane更改其尺寸?

最重要的一个是它现在的行为,最底层的是我希望它如何表现(我手工调整大小)

解决方法:

这很简单.它涉及动态计算页面尺寸之间的差异,并使用它们来强制JTabbedPane上的首选大小.我做了一个快速的实验并且有效.所以不是在这里放置大量文本 – 这里是代码.这不完美,但你应该有个主意.当然,欢迎提出问题.

import java.awt.Color;

import ponent;

import java.awt.Dimension;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JTabbedPane;

import javax.swing.event.ChangeEvent;

import javax.swing.event.ChangeListener;

public class Test {

private static int maxW = 0;

private static int maxH = 0;

public static void main(String[] args) {

final JFrame f = new JFrame();

final JTabbedPane tabs = new JTabbedPane();

tabs.add( createPanel(Color.RED, 100, 100), "Red");

tabs.add( createPanel(Color.GREEN, 200, 200), "Green");

tabs.add( createPanel(Color.BLUE, 300, 300), "Blue");

final Dimension originalTabsDim = tabs.getPreferredSize();

tabs.addChangeListener(new ChangeListener() {

@Override

public void stateChanged(ChangeEvent e) {

Component p = ((JTabbedPane) e.getSource()).getSelectedComponent();

Dimension panelDim = p.getPreferredSize();

Dimension nd = new Dimension(

originalTabsDim.width - ( maxW - panelDim.width),

originalTabsDim.height - ( maxH - panelDim.height) );

tabs.setPreferredSize(nd);

f.pack();

}

});

f.setContentPane(tabs);

f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

f.pack();

f.setLocationRelativeTo(null);

f.setVisible(true);

}

private static final JPanel createPanel( Color color, int w, int h ) {

JPanel p = new JPanel();

p.setBackground(color);

p.setPreferredSize( new Dimension(w, h));

maxW = Math.max(w, maxW);

maxH = Math.max(h, maxH);

return p;

}

}

标签:java,swing,jtabbedpane

来源: https://codeday.me/bug/0607/1191254.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。