请看这个JAVA小程序的问题

功能:根据输入的数字,在屏幕下方画几个方块。问题:为何第一次显示后马上屏蔽,之后再点击按钮才正常显示?importjava.awt.*;importjavax.swing... 功能:根据输入的数字,在屏幕下方画几个方块。

问题:为何第一次显示后马上屏蔽,之后再点击按钮才正常显示?

import java.awt.*; import javax.swing.*;
import java.util.*; import java.awt.event.*;

public class fs extends JFrame {
public static void main(String args[]) {
Demo myDemo=new Demo();
}
}

class Demo extends JFrame implements ActionListener {
JTextField input1= new JTextField(4);
JButton start=new JButton("开始");
int num;
int xo=200, yo=200;

public Demo() {
setSize(1200,800);
setLayout(new FlowLayout());
Container con=getContentPane();
con.add(new JLabel("请输入(1—10)"));
con.add(input1);
con.add(start);
start.addActionListener(this);
setVisible(true);
}

public void actionPerformed(ActionEvent e) {
num=Integer.parseInt(input1.getText());
Graphics g = getGraphics();
for (int i=0; i<num; i++) {
drawBlock(g);
xo=xo+40;
}
}

private void drawBlock(Graphics g) {
g.setColor(Color.blue);
g.fillRect(xo, yo, 30, 100);
}

}
展开
 我来答
匿名用户
2013-08-20
展开全部
import java.awt.*; import javax.swing.*;
import java.util.*; import java.awt.event.*;

public class JFrameSimple extends JFrame implements ActionListener {
JTextField input1= new JTextField(4);
JButton start=new JButton("开始");
int num;
int xo=200, yo=200;

public JFrameSimple() {
setSize(1200,800);
setLayout(new FlowLayout());
Container con=getContentPane();
con.add(new JLabel("请输入(1—10)"));
con.add(input1);
con.add(start);
start.addActionListener(this);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public void actionPerformed(ActionEvent e) {
num=Integer.parseInt(input1.getText());
Graphics g = getGraphics();
for (int i=0; i<num; i++) {
drawBlock(g);
xo=xo+40;
}
}

private void drawBlock(Graphics g) {
g.setColor(Color.blue);
g.fillRect(xo, yo, 30, 100);
}

public static void main(String args[]) {
JFrameSimple myDemo=new JFrameSimple();
}
}
追问
还是没有解决啊。和我的程序运行一样。
第一次点击“开始”按钮,无显示。第二次点击,才正常显示。

另:改好后,最好提示我程序为什么出那样的问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友748bedb
2013-08-20 · 贡献了超过101个回答
知道答主
回答量:101
采纳率:0%
帮助的人:36.8万
展开全部
应该是没有刷新的问题
追问
如何刷新?代码。
追答
这个我也不大清楚,你查下api
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
孑敖88
2013-08-20 · 超过25用户采纳过TA的回答
知道答主
回答量:104
采纳率:0%
帮助的人:42.5万
展开全部
画完后就要调用repait()方法刷新面板.
追问
不太明白,可否给出改动部分代码?
追答

你先说说你这个程序要实现什么功能,我帮你解决.你运行一下这个,试试达到你的效果了没?你需要什么样的功能我帮你实现!我自己写的啊,希望采纳啊!我能帮到你的啊!

public class Test extends JFrame{
int x=100;
int y=100;
int result=0;
JTextField input=null;
JButton start=null;
public Test(){
this.setBounds(200, 100, 400, 400);
initComponent();
addComponent();

this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void addComponent() {
this.setLayout(new FlowLayout());
this.add(new JLabel("请输入(1-10)的整数:"));
this.add(input);
this.add(start);
}
private void initComponent() {
input=new JTextField(10);
start=new JButton("开始");

//添加事件监听
start.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
result=Integer.parseInt(input.getText());
Graphics g=getGraphics();
for (int i = 0; i < result; i++) {
paint(g);
x+=20;
System.out.println(i);
}
}
});

}

public void paint(Graphics g) {
g.setColor(Color.BLUE);
g.fillRect(x, y, 15, 50);
}

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

}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式