JAVA :Jpanel 控件 无法显示问题

11 篇文章 0 订阅

在做一个嵌入式摄像头项目中,遇到了这样一个郁闷的问题。

新建了一个类继承Jpanel,向其中添加了一些控件后,加入到原来的JFrame中,然后Jpanel中控件,无论如何都显示不了了。

(为了方便控制 ContentPane布局为“borderlayout”,而JPanel布局为“absolute”,Jpanel放在contenpane的NORTH位置)


而后上网查了不少资料,但是仍然无法解决。只能自己探究。

经过一天的尝试,发现了一个奇怪的现象。

当将继承类的布局

getContentPane().add(comp, BorderLayout.CENTER);

的时候。这个类的控件居然就能够正常显示了。而其他的例如getContentPane().add(comp, BorderLayout.NORTH);控件就无法显示。

真是神奇的存在!

于是进一步探究 终于发现了问题的核心!总结起来就一句话

当自己写的JPanel布局为Null时,只能放在CENTER的位置,否则将无法显示!

或者说只要将布局改为非Null,一切都正常了。

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
首先,我们可以使用Java Swing来创建这个界面。在Swing中,我们可以使用各种控件来实现界面的各个部分。下面是一个简单的实现: ```java import javax.swing.*; import java.awt.*; public class MyFrame extends JFrame { public MyFrame() { // 设置窗口标题 super("用户信息"); // 创建左侧控件,使用JTextArea并设置为只读 JTextArea leftTextArea = new JTextArea(); leftTextArea.setEditable(false); // 创建右侧控件,使用JPanel,并设置为网格布局 JPanel rightPanel = new JPanel(new GridLayout(0, 2)); // 添加单行数字显示 JLabel label1 = new JLabel("单行数字显示:"); JTextField textField1 = new JTextField(); textField1.setEditable(false); rightPanel.add(label1); rightPanel.add(textField1); // 添加输入姓名控件 JLabel label2 = new JLabel("姓名:"); JTextField textField2 = new JTextField(); rightPanel.add(label2); rightPanel.add(textField2); // 添加选择性别控件 JLabel label3 = new JLabel("性别:"); JRadioButton maleButton = new JRadioButton("男", true); JRadioButton femaleButton = new JRadioButton("女"); ButtonGroup genderGroup = new ButtonGroup(); genderGroup.add(maleButton); genderGroup.add(femaleButton); rightPanel.add(label3); rightPanel.add(maleButton); rightPanel.add(new JLabel()); rightPanel.add(femaleButton); // 添加选择省市控件 JLabel label4 = new JLabel("省:"); JComboBox<String> provinceBox = new JComboBox<>(new String[]{"省1", "省2", "省3"}); JLabel label5 = new JLabel("市:"); JComboBox<String> cityBox = new JComboBox<>(new String[]{"市1", "市2", "市3"}); rightPanel.add(label4); rightPanel.add(provinceBox); rightPanel.add(label5); rightPanel.add(cityBox); // 添加添加按钮 JButton addButton = new JButton("添加"); rightPanel.add(addButton); // 使用BorderLayout将左侧和右侧控件放置于窗口中 setLayout(new BorderLayout()); add(leftTextArea, BorderLayout.WEST); add(rightPanel, BorderLayout.CENTER); // 设置窗口大小并显示 setSize(600, 400); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } public static void main(String[] args) { new MyFrame(); } } ``` 这个程序将会创建一个窗口,其中左侧为一个只读的多行文本控件,右侧为各种输入控件和一个“添加”按钮。你可以根据需要修改控件的属性和布局,以满足你的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值