如何将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);
}
}
答案 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);
}