swing的2个问题问题,求指教!
先别说话,请看代码:
package TestLogin_claP;
import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Login_Cla {
privateint x;
privateint y;
privateint width;
privateint height;
JFrame jfLogin = null;
JPanel jpOneLayer = null;
JPanel jpTwoLayer = null;
JPanel jpTwo_OneLayer = null;
JPanel jpTwo_TwoLayer = null;
Login_Cla(){
initCoordinateDate();
setupJFrame();
setupJpOneLayer();
setupJpTwoLayer();
initJpTwo_OneLayer();
initJpTwo_TwoLayer();
}
privatevoidinitCoordinateDate(){
this.x = 0;
this.y = 0;
this.width = 500;
this.height = 500;
}
//----------- setup Component ------
private voidsetupJFrame(){
jfLogin= new JFrame("Welcome");
jfLogin.setVisible(true);
jfLogin.setSize(width, height);
jfLogin.setLayout(new GridLayout(2,1));
jfLogin.setResizable(false);
jfLogin.setLocationRelativeTo(null);
WindowClose_Cla winclose_obj = new WindowClose_Cla();
jfLogin.addWindowListener(winclose_obj);
//jfLogin.setUndecorated(true);//这一步用出问题来了,报了个异常,搞不懂啊!
}
privatevoidsetupJpOneLayer(){//it`s the first JPanel
jpOneLayer = new JPanel();
jfLogin.add(jpOneLayer);
}
privatevoidsetupJpTwoLayer(){//it`s the second JPanel
jpTwoLayer = new JPanel();
jfLogin.add(jpTwoLayer);
jpTwoLayer.setLayout(new GridLayout(1,2));
}
//----------- init JPanel ------
privatevoidinitJpTwo_OneLayer(){
jpTwo_OneLayer = new JPanel();
jpTwoLayer.add(jpTwo_OneLayer);
jpTwo_OneLayer.setBackground(Color.blue);
}
privatevoidinitJpTwo_TwoLayer(){
jpTwo_TwoLayer = new JPanel();
jpTwoLayer.add(jpTwo_TwoLayer);
jpTwo_TwoLayer.setBackground(Color.red);
}
//--------- complete JPanel -------
publicvoidcompleteJpOneLayer(){
//不显示!
JLabel jlWelcomeToFont = new JLabel("你好啊!");
jpOneLayer.add(jlWelcomeToFont);
//jlWelcomeToFont.setText("你好!");
jlWelcomeToFont.setVisible(true);
Font font=new Font("华文云彩",Font.PLAIN,50);
jlWelcomeToFont.setFont(font);
}
privatevoidcompleteJpTwo_OneLayer(){
}
privatevoidcompleteJpTwo_TwoLayer(){
}
}
/*
* 此处的类,特点:都是公有的,可以大家都用的类
*/
class WindowClose_Cla extends WindowAdapter{
public void windowClosing(WindowEvent e){
e.getWindow().dispose() ;
//System.exit(0) ;//这个方法和上一个方法用起来效果一样
}
}
[解决办法]
在代码里完全看不到方法completeJpOneLayer被调用,当然不会有显示
[解决办法]
晕死,你忘记调用completeJpOneLayer()方法了
这个方法最后加上这个方法
private void setupJpTwoLayer(){//it`s the second JPanel
jpTwoLayer = new JPanel() ;
jfLogin.add(jpTwoLayer) ;
jpTwoLayer.setLayout(new GridLayout(1,2)) ;
completeJpOneLayer();
}