将面板和文本框放在同一帧中

时间:2014-12-20 20:31:24

标签: java swing user-interface jpanel jtextarea

如何将Jlabel和Text放在同一帧中?

如果我最后添加文本,那么只显示文本,这是我的代码:

public MatrixFrame(String framname, int width, int height) {

    width =7;
    height = 6;
    JFrame fram = new JFrame(framname);
    fram.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    fram.setSize(500,500);

    JTextArea text = new JTextArea("Here come Text");

    valMatrixPanel = new ValMatrixPanel(height,width,Color.GRAY, Color.black);

    JPanel pan = valMatrixPanel.getPan();       // pan is 6*7 panels lock the picture

    fram.add(pan);
    fram.add(text);
    fram.setVisible(true);
}

}

3 个答案:

答案 0 :(得分:2)

解决这个问题的关键是你理解如何使用布局管理器,因为这就是Swing决定在什么位置以及如何调整大小的方法。首先快速轻松修复,将所有组件放入JPanel,默认情况下使用FlowLayout,然后将JPanel添加到JFrame。 设置JPanel或JFrame的大小,执行在添加所有内容后调用JFrame上的pack(),然后最终调用setVisible(true)

更好的长期答案:阅读其他Swing教程中的布局管理器教程:here

答案 1 :(得分:0)

试试这个 您将不得不为网格布局添加导入 检查一下 您需要做的就是添加网格布局,因为文本框与面板重叠。 所以添加一行

fame.getContentPane()。setLayout(new GridLayout(1,1));

 JPanel pan = valMatrixPanel.getPan();       // pan is 6*7 panels lock the picture


    fame.getContentPane().setLayout(new GridLayout(1,1));

    fram.add(pan);
    fram.add(text);
    fram.setVisible(true);

答案 2 :(得分:0)

在fram.add()

中使用BorderLayout 像这样

public MatrixFrame(String framname, int width, int height) {
width =7;
height = 6;
JFrame fram = new JFrame(framname);
fram.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fram.setSize(500,500);

JTextArea text = new JTextArea("Here come Text");

valMatrixPanel = new ValMatrixPanel(height,width,Color.GRAY, Color.black);

JPanel pan = valMatrixPanel.getPan();       // pan is 6*7 panels lock the picture

fram.add(pan,BorderLayout.WEST);
fram.add(text,BorderLayout.NORTH);
fram.setVisible(true);

}