java JLabel 标签内容如何随着窗口的变化而变化

我要实现以下功能:1.用户输入数字Num2.随机产生线条,矩形,圆形,三者数量之和为Num3.下方标签显示三者的数量各是多少4.随着窗口的变大变小,2和3均发生相应变化。... 我要实现以下功能:
1.用户输入数字Num
2.随机产生线条,矩形,圆形,三者数量之和为Num
3.下方标签显示三者的数量各是多少
4.随着窗口的变大变小,2和3均发生相应变化。

ps:现在想知道标签(矩形:XX,圆形:XX;线条XX)中的各个数字该如何随着窗口的变化而变化,以达到符合当前实际情况的目的。

在线等~~谢谢啦!
展开
 我来答
fuhaiwei
2013-04-04 · TA获得超过3409个赞
知道大有可为答主
回答量:974
采纳率:75%
帮助的人:1387万
展开全部

//看看这个是否符合你的需求

import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class FrameTest extends JFrame {
private JTextField textField;
private JLabel label;
private int count;
private int line;
private int rect;
private int circle;
public static void main(String[] args) {
new FrameTest();
}
public FrameTest() {
setSize(800, 600);
setDefaultCloseOperation(EXIT_ON_CLOSE);
textField = new JTextField(20);
textField.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
count = new Integer(textField.getText());
repaint();
}
});
label = new JLabel();
JPanel panel = new JPanel();
panel.add(new JLabel("input a num"));
panel.add(textField);
add(panel, BorderLayout.NORTH);
add(label, BorderLayout.SOUTH);
setVisible(true);
}
public void paint(Graphics g) {
super.paint(g);
randomCount();
for (int i = 0; i < line; i++) {
drawRandomLine(g);
}
for (int i = 0; i < rect; i++) {
drawRandomRect(g);
}
for (int i = 0; i < circle; i++) {
drawRandomCircle(g);
}
label.setText("Line : " + line + ", Rect : " + rect + ", Cirlce : " + circle);
}
private void randomCount() {
line = rect = circle = 0;
for (int i = 0; i < count; i++) {
Random random = new Random();
switch (random.nextInt(3)) {
case 0:
line++;
break;
case 1:
rect++;
break;
case 2:
circle++;
break;
}
}
}
private void drawRandomLine(Graphics g) {
Random random = new Random();
g.drawLine(random.nextInt(getWidth()), random.nextInt(getHeight()),
random.nextInt(getWidth()), random.nextInt(getHeight()));
}
private void drawRandomRect(Graphics g) {
Random random = new Random();
g.drawRect(random.nextInt(getWidth()), random.nextInt(getHeight()),
random.nextInt(getWidth()), random.nextInt(getHeight()));
}
private void drawRandomCircle(Graphics g) {
Random random = new Random();
g.drawOval(random.nextInt(getWidth()), random.nextInt(getHeight()),
random.nextInt(getWidth()), random.nextInt(getHeight()));
}
}
bxhuhull
推荐于2017-09-04
知道答主
回答量:12
采纳率:0%
帮助的人:4.2万
展开全部
捕获窗口的大小 然后根据比列设置各个图形的大小吧 你说的有点复杂,不是很清楚。
可以用showinputmessag() 来实现输入 然后捕获数据 用JPanel 的paintcomponent() 方法画那些东西
然后设置标签的值
更多追问追答
追问
嗯,我只要实现最后一条功能就好了。就是标签里面各个形状的个数不能随着窗口的变化而变化。
JLabel label=new JLabel("Lines: "+lines.length+' '+"Ovals: "+ovals.length+' '+"Rects: "+rects.length+"Total:"+MyTest.get_Num());
我用的是这种方法。可是这个语句具体地要放在哪里呢?
追答
要固定不变的话    你画图形应该和窗口没什么关系吧,图形不会随窗口变化的。至于这个JLabel label=new JLabel("Lines: "+lines.length+' '+"Ovals: "+ovals.length+' '+"Rects: "+rects.length+"Total:"+MyTest.get_Num());    你可以放最监听器的最后就好了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式