| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1811 人关注过本帖
标题:[求助]java语言的布局管理器和组件位置Location方法的调用
只看楼主 加入收藏
热学男儿
Rank: 1
等 级:新手上路
帖 子:109
专家分:0
注 册:2007-4-28
收藏
 问题点数:0 回复次数:16 
[求助]java语言的布局管理器和组件位置Location方法的调用
我个人写了一个小程序,输出一串彩色字符,字符的三色对比数值要求接受键盘的输入,但是在程序中设置了布局管理器,彩色字符串就可以显示,但是字符串的位置设定却没有任何的效果,如果取消了布局管理器,彩色字符串根本就不会显示出来,每次运行程序时就只有一个空空的窗口,请高手知道小弟,怎样才能既让彩色字符串显示出来,有能随意控制字符串所在窗口中的位置。(注:我是用的标签组件设置的彩色字符串),下面是小弟的程序。
import java.io.*;
import java.awt.*;
import java.awt.event.*;
public class CaiZi{
public void CaiZi(int a,int b,int c){
Frame g=new Frame("彩色字框");
g.setBackground(new Color(40,255,60));
g.setForeground(new Color(a,b,c));
g.setLayout(new FlowLayout());
g.setSize(500,200);
Font f=new Font("楷体",Font.BOLD,40);
Label h=new Label("这是我的第一个GUI程序");
h.setLocation(20,100);
g.add(h);
h.setFont(f);
h.setVisible(true);
g.setVisible(true);
g.addWindowListener(new WindowAdapter()
{public void windowClosing(WindowEvent e)
{System.exit(0);}});
}
public static void main(String[] args){
BufferedReader br;
String str;
int[] data=new int[3];
System.out.println("请输入三色的配比数据");
for(int i=0;i<3;){
try{
br=new BufferedReader(new InputStreamReader(System.in));
str=br.readLine();
data[i]=Integer.parseInt(str);
if(data[i]<=255){i++;}
else{System.out.println("你输入的数据有误,请重新输入数据");}
continue;
}
catch(IOException e){System.out.println(e);}
}
CaiZi op=new CaiZi();
op.CaiZi(data[0],data[1],data[2]);
}
}


请各位高手们帮忙,这个问题困扰了小弟好多天了,小弟的好几个程序都有这个问题,有谁能帮我解决,小弟不胜感激。
搜索更多相关主题的帖子: Location java 管理器 组件 语言 
2007-04-28 22:33
神vLinux飘飄
Rank: 1
等 级:新手上路
威 望:1
帖 子:309
专家分:0
注 册:2007-1-27
收藏
得分:0 
public void CaiZi(int a,int b,int c)
构造函数使没有返回类型的啊

泛出微微的蓝色的光,像有生命般涌动着,闪烁着,平滑而优美,达到了机械和美学结合的最高境界
2007-04-29 10:09
lizhijie
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2007-4-28
收藏
得分:0 

用setLocation前先setLayout(null),这样才有效。


2007-04-29 14:12
热学男儿
Rank: 1
等 级:新手上路
帖 子:109
专家分:0
注 册:2007-4-28
收藏
得分:0 
加上返回类型也不行啊,楼上的大哥,教教小弟,具体该怎么做啊
2007-04-29 14:24
热学男儿
Rank: 1
等 级:新手上路
帖 子:109
专家分:0
注 册:2007-4-28
收藏
得分:0 
三楼的朋友,我就是说得那个问题啊,先设置了取消布局管理器的话,输出的只有一个空空的窗口了,彩色字符串根本就没有,或者说根本就没有添加的组件,我用其他的组件试过,窗口里同样不会有任何组件出现。
2007-04-29 14:29
fqj793
Rank: 1
等 级:新手上路
威 望:2
帖 子:228
专家分:0
注 册:2006-12-9
收藏
得分:0 
你的代码没有错呀,你的JDK是什么版本?

知识改变命运!!!
2007-04-29 15:36
fqj793
Rank: 1
等 级:新手上路
威 望:2
帖 子:228
专家分:0
注 册:2006-12-9
收藏
得分:0 

对不起,理解错误了


知识改变命运!!!
2007-04-29 16:18
lizhijie
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2007-4-28
收藏
得分:0 
你的实在不想改了,重行写了一个,最简单的,还有很多可以改进的地方,比如可以添加JTextField直接在界面上进行输入要的参数。加油朋友,java不是短时间能精通的,慢慢的摸索着前进,一段时间后你会惊奇的发现自己在不知不觉中进步了!

我也是初学者,共同努力!


public class CaiZi extends JFrame{
String caizi;
int r;
int g;
int b;
int x;
int y;

//BufferedReader[] in;

CaiZi(){
setSize(500,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

input();

Container c=this.getContentPane();
c.add(new panel(r,g,b,x,y,caizi));
setVisible(true);
}

public static void main(String[] args){
new CaiZi();
}

private void input(){
System.out.println("Please input:");

try{
System.out.print("彩字:");
BufferedReader in_0=new BufferedReader(new InputStreamReader(System.in));
caizi=in_0.readLine();

System.out.print("r:");
BufferedReader in_1=new BufferedReader(new InputStreamReader(System.in));
r=Integer.parseInt(in_1.readLine());

System.out.print("g:");
BufferedReader in_2=new BufferedReader(new InputStreamReader(System.in));
g=Integer.parseInt(in_2.readLine());

System.out.print("b:");
BufferedReader in_3=new BufferedReader(new InputStreamReader(System.in));
b=Integer.parseInt(in_2.readLine());

System.out.print("x:");
BufferedReader in_4=new BufferedReader(new InputStreamReader(System.in));
x=Integer.parseInt(in_4.readLine());

System.out.print("y:");
BufferedReader in_5=new BufferedReader(new InputStreamReader(System.in));
y=Integer.parseInt(in_5.readLine());
}catch(IOException e){
System.err.println(e.getMessage());
}

}
}
class panel extends JPanel{
int r;
int g;
int b;
int x;
int y;
String str;
panel(int r,int g,int b,int x,int y, String str){
this.r=r;
this.g=g;
this.b=b;
this.x=x;
this.y=y;
this.str=str;
}
public void paintComponent(Graphics g1){
super.paintComponent(g1);
Graphics2D g2=(Graphics2D)g1;
g2.setColor(new Color(r,g,b));
g2.setFont(new Font("",Font.BOLD,40));
g2.drawString(str, x, y);
}
}

2007-04-29 23:10
热学男儿
Rank: 1
等 级:新手上路
帖 子:109
专家分:0
注 册:2007-4-28
收藏
得分:0 
楼上的朋友,希望你理解了我的意思在回答好吗,我的程序本来就没有错误,我只是想知道setLocation()方法到底该如何调用,不过还是感谢你的参与讨论

[此贴子已经被作者于2007-4-29 23:57:11编辑过]


2007-04-29 23:54
tblovecj
Rank: 1
等 级:新手上路
帖 子:181
专家分:0
注 册:2006-9-20
收藏
得分:0 
你取消了布局当然执行出来只有空白窗体啊,因为你没了布局,而且Container里面需要指明一个布局,如果你真的要取消布局的话,你试下用空布局试下,这样就相当于取消了布局,给你里面的组件加个坐标就OK
this.setLayout(null);

2007-04-30 00:56
快速回复:[求助]java语言的布局管理器和组件位置Location方法的调用
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016080 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved