java swing中JPanel的布局问题
关注:92 答案:3 信息版本:手机版 电脑版
解决时间 2021-01-17 16:07
提问者侢遇噹姩揂
2021-01-17 09:36
我在frame中分别布局了五个面板,让其显示在borderlayout管理器东西南北中的不同位置,问题是:west的面板中加入label、button能实现出来。但是加入JDesktopPane>InternalFrame进去就不能显示,其他部位显示正常,求高手指教一二
//放入这段代码能显示面板
JPanel Panel_1=new JPanel(new BorderLayout());//2013.4.12
add(BorderLayout.WEST,Panel_1);
JButton btn_1 = new JButton();
Panel_1.add(BorderLayout.NORTH,btn_1);
//放入这段代码不能显示
最佳答案
二级知识专家清欢话寂寥
2021-01-17 11:01
贴码吧,不然怎么分析
desktopPane_1.setBounds(0, 0, 1, 1);你这尺寸在1个像素,肉眼看不到啊。
//
还是你设置的bounds问题,之所以放center能显示,是因为center里面会自适应大小
全部回答
1楼孤者何懼
2021-01-17 13:59
1.布局首先要理清思路,那一个组件放在哪个组件里面,就如你的代码他们分别是 jframe f中放置了jpanel center,而jpanel center中又放置了5个testpanel[] t = new testpanel[5];
也就是说,你的5个test_shu对象的位置由center容器的布局方式决定即你的代码22行处 private jpanel center = new jpanel(new flowlayout());
这个布局方式决定,所以,而flowlayout的布局方式的默认值是:
流式布局管理器把容器看成一个行集,好象平时在一张纸上写字一样,一行写满就换下一行。行高是用一行中的控件高度决定的。flowlayout是所有 japplet/japplet的默认布局。在生成流式布局时能够指定显示的对齐方式,默认情况下是居中(flowlayout.center)
flowlayout() //生成一个默认的流式布局,组件在容器里居中,每个组件之间留下5个像素的距离.
flowlayout(int alinment) //可以设定每行组件的对齐方式.
flowlayout(int alignment,int horz,int vert) //设定对齐方式并设定组件水平和垂直的距离.
当容器的大小发生变化时,用flowlayout管理的组件会发生变化,其变化规律是:组件的大小不变,但是相对位置会发生变化.
所以要达到你的效果,只需要将
22行处的代码改成如下设置就可以了:
private jpanel center = new jpanel(new flowlayout(flowlayout.center, 0, 0));
2楼看厌了山川
2021-01-17 12:21
贴出你的代码,帮你找找。
-------------------------------------------------------
你给出的代码,有几个PANEL不知道是怎么来的,我稍改动了一下,你看看,
现在是显示出来了。
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JScrollPane;
public class App extends JFrame {
public App() {
// 加入这这段注释代码不能显示
JDesktopPane desktopPane_1 = new JDesktopPane();
desktopPane_1.setBounds(0, 0, 1, 1);
add(BorderLayout.CENTER, desktopPane_1);
JInternalFrame internalFrame_1 = new JInternalFrame(
"New JInternalFrame");
internalFrame_1.setSize(400, 300);
desktopPane_1.add(internalFrame_1);
JScrollPane scrollPane_1 = new JScrollPane();
internalFrame_1.getContentPane().add(scrollPane_1, BorderLayout.CENTER);
internalFrame_1.setVisible(true);
JButton btn_1 = new JButton("OK");
add(BorderLayout.NORTH, btn_1);
setSize(600, 400);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new App();
}
}
我要举报
如以上信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
推荐资讯
大家都在看