JAVA 添加控件问题 代码如下 很简单的一个程序 在线等 Thanks

importjavax.swing.*;importjava.awt.Color;importjava.awt.Graphics;importjava.awt.Panel... import javax.swing.*;
import java.awt.Color;import java.awt.Graphics;
import java.awt.Panel;
public class Guifirst extends JFrame{

//面板管理
public Guifirst(){

//按钮
Panel toolPanel;
toolPanel = new Panel();
JButton jb =new JButton("结点");
JButton jbb =new JButton("连线");
jb.setBounds(250, 450, 100, 50);
jbb.setBounds(400, 450, 100, 50);

//接点画图
NewPanel np01 =new NewPanel();
np01.GetNewPanel(20, 20,100, "结点1");
NewPanel np02 =new NewPanel();
np02.GetNewPanel(200,2,100, "结点2");

//添加控件 add(jb);
add(jbb);
add(np01);
add(np02);
}

public static void main(String[] args){

Guifirst frame = new Guifirst();
frame.setTitle("FUCK");
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800, 550);

frame.setVisible(true);

}
}
class NewPanel extends JPanel{
int x;
int y;
int r;
String s;
public void GetNewPanel(int getX,int getY,int getR,String getS){
x=getX;
y=getY;
r=getR/2;
s=getS;
}

protected void paintComponent(Graphics g) { super.paintComponent(g);
g.fillOval(x, y, 2*r ,2*r);
g.setColor(Color.red);
g.drawString(s, x+3*r/4, y+r);
}
}

我是想画出连个圆在不同位置
但是程序执行结果只显示最后添加的那个圆 前面的不显示
我同样添加两个Button 但都可以显示
这都是两个对象 为什么结果不一样啊
另求解决方法 求高手解答
展开
 我来答
920183589
2012-11-29
知道答主
回答量:4
采纳率:0%
帮助的人:3.2万
展开全部

 

 

只要给JFRAME设布局管理器就行,只要在构造函数中添几句语句,具体代码如下(布局管理器有多种,具体你可以去借本书看,常用的有 流布局,BorderLayout,GridLayout,BoxLayout等几个),希望能帮到你

package sort;import javax.swing.*;

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.GridLayout;

import java.awt.Panel;

 

 

public class Guifirst  extends JFrame{

 

  //面板管理

 

   public Guifirst(){

 

   

 

   

 

  //按钮

 

   Panel toolPanel; 

 

   toolPanel = new Panel();

 

   JButton jb =new JButton("结点");

 

   JButton jbb =new JButton("连线");

 

   jb.setBounds(250, 450, 100, 50);

 

   jbb.setBounds(400, 450, 100, 50);

 

   

 

  //接点画图

 

   NewPanel np01 =new NewPanel();

 

   np01.GetNewPanel(20, 20,100, "结点1");

 

   NewPanel np02 =new NewPanel();

 

   np02.GetNewPanel(200,2,100, "结点2");

 

   

 

   

  //布局面板

   JPanel imagePanel=new JPanel();

   imagePanel.setLayout(new GridLayout(2,1));

   

  JPanel btnPanel=new JPanel();

  //添加控件

 

 

  btnPanel.add(jb);

 

  btnPanel.add(jbb);

 

  imagePanel.add(np01);

   

  imagePanel.add(np02); 

  this.add(imagePanel);

  this.add(btnPanel);

    this.setLayout(new GridLayout(2,1));

 

  }

 

   

 

   public static void main(String[] args){

 

   

 

    Guifirst frame = new Guifirst();

 

    frame.setTitle("FUCK");

 

    frame.setLocationRelativeTo(null);

 

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 

    frame.setSize(800, 550);

 

   

 

     

 

    frame.setVisible(true);

 

   

 

   

 

   }

 

 

}

class NewPanel extends JPanel{

 

      int x;

 

    int y;

   

    int r;

   

    String s;

   

     public void GetNewPanel(int getX,int getY,int getR,String getS){

   

     x=getX;

   

     y=getY;

 

     r=getR/2;

   

     s=getS;

 

  }

 

 

 

  protected void paintComponent(Graphics g) {

 

 

    super.paintComponent(g);

 

    g.fillOval(x, y, 2*r ,2*r); 

 

    g.setColor(Color.red);

 

    g.drawString(s, x+3*r/4, y+r);

 

  }

 

}

 

追问
不好意思 应该把这个设为正确的 可是 我没注意 我擦 真不好意思
这个程序员有点冷
2012-12-01
知道答主
回答量:12
采纳率:100%
帮助的人:3.4万
展开全部
import java.awt.Color;
import java.awt.Graphics;
import java.awt.GridLayout;

import javax.swing.*;
public class N5 extends JFrame{
/**
* @param args
*/
JButton j1;
JButton j2;
JPanel pan1;
JPanel pan2;
JPanel pan3;
JPanel pan4;

public N5()
{
j1=new JButton("222");
j2=new JButton("333");
j1.setBounds(400, 450, 100, 50);

j2.setBounds(400, 450, 100, 50);
pan1=new newPan(20, 20,100, "结点1");
pan2=new newPan(200,2,100, "结点2");
pan3=new JPanel();
pan4=new JPanel();
pan3.setLayout(new GridLayout(1,2));
pan3.add(j1);
pan3.add(j2);
pan4.setLayout(new GridLayout(3,1));
pan4.add(pan1);
pan4.add(pan2);
pan4.add(pan3);

this.add(pan4);
}
public static void main(String[] args) {
// TODO Auto-generated method stub

N5 frame = new N5();

frame.setTitle("FUCK");

frame.setLocationRelativeTo(null);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setSize(1600, 1100); frame.show();
}
}
class newPan extends JPanel
{
int x;
int y;
int r;

String s;
public newPan(int x,int y,int r,String s)
{
this.x=x;
this.y=y;
this.r=r;

this.s=s;

}
public void paint(Graphics g)
{
g.drawOval(x, y,2*r,2*r);
g.setColor(Color.red);
g.drawString(s, x-r, y+r);
}

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友845f74e61
2012-11-28 · TA获得超过6929个赞
知道大有可为答主
回答量:4050
采纳率:50%
帮助的人:1641万
展开全部
如查你的窗体没有指定布局的话,默认的是BorderLayout

你只是很巧合的将按钮挤到了那个位置。而且你的Panel没有指定 setBounds
所以添加出什么奇怪的现象都有可能。
追问
那如何修改呢 
刚看完书 练手
然后 就卡死在这了
书看了一遍一遍又一遍 不懂啊
追答
晚上才看到你的追问,下边的效果出来了.你看那个,如果不符合你再联系我.如果他帮到你了,那你就采纳他的吧.
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式