先别说话,请看代码:
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 {
private int x ;
private int y ;
private int width ;
private int 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();
}
private void initCoordinateDate(){
this.x = 0 ;
this.y = 0 ;
this.width = 500 ;
this.height = 500 ;
}
//----------- setup Component ------
private void setupJFrame(){
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) ;//这一步用出问题来了,报了个异常,搞不懂啊!
}
private void setupJpOneLayer(){//it`s the first JPanel
jpOneLayer = new JPanel() ;
jfLogin.add(jpOneLayer) ;
}
private void setupJpTwoLayer(){//it`s the second JPanel
jpTwoLayer = new JPanel() ;
jfLogin.add(jpTwoLayer) ;
jpTwoLayer.setLayout(new GridLayout(1,2)) ;
}
//----------- init JPanel ------
private void initJpTwo_OneLayer(){
jpTwo_OneLayer = new JPanel() ;
jpTwoLayer.add(jpTwo_OneLayer) ;
jpTwo_OneLayer.setBackground(Color.blue) ;
}
private void initJpTwo_TwoLayer(){
jpTwo_TwoLayer = new JPanel() ;
jpTwoLayer.add(jpTwo_TwoLayer) ;
jpTwo_TwoLayer.setBackground(Color.red) ;
}
//--------- complete JPanel -------
public void completeJpOneLayer(){
//不显示!
JLabel jlWelcomeToFont = new JLabel("你好啊!") ;
jpOneLayer.add(jlWelcomeToFont) ;
//jlWelcomeToFont.setText("你好!") ;
jlWelcomeToFont.setVisible(true) ;
Font font=new Font("华文云彩",Font.PLAIN,50) ;
jlWelcomeToFont.setFont(font) ;
}
private void completeJpTwo_OneLayer(){ }
private void completeJpTwo_TwoLayer(){ }
}
/*
* 此处的类,特点:都是公有的,可以大家都用的类
*/
class WindowClose_Cla extends WindowAdapter{
public void windowClosing(WindowEvent e){
e.getWindow().dispose() ;
//System.exit(0) ;//这个方法和上一个方法用起来效果一样
}
}----------------------- 问 题 ----------------------
问题:
1、为什么我的代码不显示“你好”这几个字?我已经用了jpOneLayer.add(jlWelcomeToFont)啊?
同时以防万一,我加了jlWelcomeToFont.setVisible(true);怎么就显示不出这几个字?
2、我在setupJFrame()函数里面写了句jfLogin.setUndecorated(true);目的是想隐藏我窗口的标题栏【也就是有叉叉、最小化等这样按钮的一栏】,但是不但没实现目的,还出现了异常?还使得窗口别的东西消失了,求教,为什么?初学者求教!
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 {
private int x ;
private int y ;
private int width ;
private int 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();
}
private void initCoordinateDate(){
this.x = 0 ;
this.y = 0 ;
this.width = 500 ;
this.height = 500 ;
}
//----------- setup Component ------
private void setupJFrame(){
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) ;//这一步用出问题来了,报了个异常,搞不懂啊!
}
private void setupJpOneLayer(){//it`s the first JPanel
jpOneLayer = new JPanel() ;
jfLogin.add(jpOneLayer) ;
}
private void setupJpTwoLayer(){//it`s the second JPanel
jpTwoLayer = new JPanel() ;
jfLogin.add(jpTwoLayer) ;
jpTwoLayer.setLayout(new GridLayout(1,2)) ;
}
//----------- init JPanel ------
private void initJpTwo_OneLayer(){
jpTwo_OneLayer = new JPanel() ;
jpTwoLayer.add(jpTwo_OneLayer) ;
jpTwo_OneLayer.setBackground(Color.blue) ;
}
private void initJpTwo_TwoLayer(){
jpTwo_TwoLayer = new JPanel() ;
jpTwoLayer.add(jpTwo_TwoLayer) ;
jpTwo_TwoLayer.setBackground(Color.red) ;
}
//--------- complete JPanel -------
public void completeJpOneLayer(){
//不显示!
JLabel jlWelcomeToFont = new JLabel("你好啊!") ;
jpOneLayer.add(jlWelcomeToFont) ;
//jlWelcomeToFont.setText("你好!") ;
jlWelcomeToFont.setVisible(true) ;
Font font=new Font("华文云彩",Font.PLAIN,50) ;
jlWelcomeToFont.setFont(font) ;
}
private void completeJpTwo_OneLayer(){ }
private void completeJpTwo_TwoLayer(){ }
}
/*
* 此处的类,特点:都是公有的,可以大家都用的类
*/
class WindowClose_Cla extends WindowAdapter{
public void windowClosing(WindowEvent e){
e.getWindow().dispose() ;
//System.exit(0) ;//这个方法和上一个方法用起来效果一样
}
}----------------------- 问 题 ----------------------
问题:
1、为什么我的代码不显示“你好”这几个字?我已经用了jpOneLayer.add(jlWelcomeToFont)啊?
同时以防万一,我加了jlWelcomeToFont.setVisible(true);怎么就显示不出这几个字?
2、我在setupJFrame()函数里面写了句jfLogin.setUndecorated(true);目的是想隐藏我窗口的标题栏【也就是有叉叉、最小化等这样按钮的一栏】,但是不但没实现目的,还出现了异常?还使得窗口别的东西消失了,求教,为什么?初学者求教!
解决方案 »
- FileDialog对话框类打开对话框后能不能修改“保存(或者打开)类型”的文本框内的文字-->比如默认为“所有文件(*.*)”,修改成“Microsoft Office Excel 工作簿( *.xls)”
- 怎样实现在图形界面中选择文件?
- 请教各位一道算法题!!!请大家帮帮忙
- 如何得到 conn.prepareStatement 最终执行的sql 语句
- 刚复习玩J2SE,想问现在我可以进军Servlet JSP了吗?
- package的使用
- 请教使用JCreator进行GUI设计的朋友。
- 浏览器能访问的图片,java程序不能访问,怎么回事儿?
- 请问在win98环境下j2sdk1.4.2该怎么配置?100分在线等!急!!!!
- java帮助
- 【在线等】《java核心技术卷1》中的代理的一个小问题
- 这段程序系统时间怎么取不出来
我的main方法在另外的一个类里面!
是这样的
public void main(String[]args){
new Login_Cla();
}
这个方法最后加上这个方法
private void setupJpTwoLayer(){//it`s the second JPanel
jpTwoLayer = new JPanel() ;
jfLogin.add(jpTwoLayer) ;
jpTwoLayer.setLayout(new GridLayout(1,2)) ;
completeJpOneLayer();
}
还有我觉得你的命名有问题,虽然我一时没找到官方的命名规则,但是你的类,第一个字母一定是要大写的,这个你看看http://www.ibm.com/developerworks/library/ws-tip-namingconv.html
这里有个官方的conventionhttp://www.oracle.com/technetwork/java/javase/documentation/codeconvtoc-136057.html
明白了!!!另外,我还想请教下,如下代码: JLabel jl_top = new JLabel(){
@Override
public void setText(String text) {
// TODO Auto-generated method stub
text = "top" ;
super.setText(text);
}
}
这里的super是JLabel还是JLabel的父类?
@override
public void setText(String text){}}意思就是一个new 了一个继承自JLabel的类对象,此类重写了JLabel的setText()方法
thanks ;
我可不可以这样理解:
1、JLabel jl = new JLabel(){......super.setText("你好")};这里的super指针指向的是JLabel?
2、JLabel jl = new JLabel();这里是实例化jl,我可不可以理解为:new JLabel() ---> 创建一个新的JLabel空间,【这个新的JLabel空间是继承JLabel的】,然后jl保存这个空间的地址?【注:初学java,我还是有点C的思想束缚,见谅!】
嗯,可以这样理解,后面new 出来的是JLabel子类对象,JLabel label引用此对象。
这下懂了这个问题!我刚才问的那个问题,也劳烦兄弟看下:
假设:
width = 500 ;
height = 350 ;那么,代码:
public void completeJpOneLayer(){
JLabel jl_top = new JLabel();
jpOneLayer.add(jl_top, BorderLayout.NORTH);
jl_top.setPreferredSize(new Dimension(width, height/12)); JLabel jl_left = new JLabel();
jpOneLayer.add(jl_left, BorderLayout.WEST); JLabel jl_right = new JLabel();
jpOneLayer.add(jl_right, BorderLayout.EAST); JLabel jl_bottom = new JLabel();
jpOneLayer.add(jl_bottom, BorderLayout.SOUTH); JLabel jl_center = new JLabel();
jpOneLayer.add(jl_center, BorderLayout.CENTER);
jl_center.setText("欢迎你,兄弟!");
Font font = new Font("华文彩云",Font.PLAIN,45);
jl_center.setFont(font);
}那么【欢迎你兄弟!】这段文字为什么靠左边而不靠中间!
在swing里面排版很麻烦,具体的我试试,有结果发上来,嘿嘿,实力不够就不上来说了
你试试,给north,west,east,south每个模块分别放置点内容,试试;或者把每个模块的大小定义为固定值试试;或者定义为GridLayout,建议,不确定哦
好吧,关键就是那个JLabel,我有一段文字,要放在JPanel中间,可是为了布局,我设置的JPanel是BorderLayout,然后JLabel放在BorderLayout.center,哪晓得文字一直靠右,纠结啊!