JAVA 添加控件问题 代码如下 很简单的一个程序 在线等 Thanks
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 但都可以显示
这都是两个对象 为什么结果不一样啊
另求解决方法 求高手解答 展开
只要给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);
}
}
不好意思 应该把这个设为正确的 可是 我没注意 我擦 真不好意思
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);
}
}
你只是很巧合的将按钮挤到了那个位置。而且你的Panel没有指定 setBounds
所以添加出什么奇怪的现象都有可能。
那如何修改呢
刚看完书 练手
然后 就卡死在这了
书看了一遍一遍又一遍 不懂啊
晚上才看到你的追问,下边的效果出来了.你看那个,如果不符合你再联系我.如果他帮到你了,那你就采纳他的吧.