【问题标题】:JFrame : cannot display two panels in jframeJFrame:无法在 jframe 中显示两个面板
【发布时间】:2017-07-27 03:06:03
【问题描述】:

我无法在 Jframe 中显示两个面板。请帮我修复下面的代码

public class quotingtable extends javax.swing.JFrame {
    DefaultTableModel model;
    JTable table;
    JButton SetButton = new JButton("Set Symbol");
    JButton VNStock = new JButton("VNStockChart");
    JButton Global = new JButton("GlobalChart");
    JPanel quotingpanel = new JPanel(new BorderLayout());
    JPanel functionpanel = new JPanel(new BorderLayout());

public void run(){
    model = new DefaultTableModel(col,row);
    quotingpanel.add(table);
    functionpanel.add(BorderLayout.CENTER,SetButton);
    functionpanel.add(BorderLayout.WEST,VNStock);
    functionpanel.add(BorderLayout.EAST,Global);
    table = new JTable(model);

    JScrollPane pane = new JScrollPane(table);
    quotingpanel.add(pane);
    getContentPane().add(BorderLayout.CENTER,functionpanel);
    getContentPane().add(BorderLayout.SOUTH,quotingpanel);
    setSize(800,800);
    setLayout( new FlowLayout());
    setLayout ( new BorderLayout());
    setVisible(true);
    setDefaultCloseOperation(EXIT_ON_CLOSE);

感谢任何帮助。

【问题讨论】:

  • 去掉出现在代码末尾的setLayout( new FlowLayout());setLayout ( new BorderLayout());

标签: java swing jframe jpanel


【解决方案1】:

删除:

setLayout( new FlowLayout());
setLayout ( new BorderLayout());

以这种方式使用BorderLayout不会拾取预先存在的组件,因此会忽略它们并且不会将它们布置出来

并考虑将setSize(800,800); 替换为pack();

你可能还想改变

getContentPane().add(BorderLayout.CENTER,functionpanel);
getContentPane().add(BorderLayout.SOUTH,quotingpanel);

getContentPane().add(functionpanel, BorderLayout.CENTER);
getContentPane().add(quotingpanel, BorderLayout.SOUTH);

这只是一个更一致和首选的机制

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-21
    • 1970-01-01
    • 2019-08-03
    • 1970-01-01
    • 1970-01-01
    • 2018-08-08
    • 1970-01-01
    相关资源
    最近更新 更多