急  求高手给与解答 不能正常显示

qilimazhaluo 2011-01-07 04:53:49
Java codeimport java.awt.*;
import javax.swing.*;

public class MyComponent extends JComponent {
Panel pane;

public void addComponentsToPane() {
Panel pane = new Panel();
pane.setVisible(true);
Panel p1, p2;
pane.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
p1 = new Panel();
p1.setBackground(Color.pink);
p1.setVisible(true);

c.gridx = 0;
c.gridy = 0;
c.weightx = 1;
c.weighty = 1;

c.ipadx = 0;
c.ipady = 0;
c.fill = GridBagConstraints.BOTH;
pane.add(p1, c);

p2 = new Panel();
p2.setBackground(Color.red);
p2.setVisible(true);

c.gridx = 3;
c.gridy = 0;
c.weightx = 0.3;
c.weighty = 0.3;
c.ipadx = 0;
c.ipady = 0;

pane.add(p2, c);

}

MyComponent() {
super();
addComponentsToPane();

setVisible(true);
}

public static void main(String args[]) {
JFrame f = new JFrame();
MyComponent mc = new MyComponent();
f.getContentPane().add(mc);
f.setBounds(100,200,400,500);//没有设定大小。。
f.setVisible(true);

}
}



程序不能正常的显示.
...全文
48 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
py330316117 2011-01-07
  • 打赏
  • 举报
回复
你的程序问题太大了,重写吧,写之前先看看书。
silswal 2011-01-07
  • 打赏
  • 举报
回复
我不清楚关于如何安全extends JComponent ,但显然你的代码没做到。也许你要花大功夫去研究。
但是我觉得你可以不必这么实现。你只要一个方法,返回一个JComponent就可以满足你的需求。
看以下的改动就够了。

public Panel addComponentsToPane() {
//...
return pane;

}
//...
main(){
//...
f.getContentPane().add(mc.addComponentsToPane());
//...
}
totaka 2011-01-07
  • 打赏
  • 举报
回复

public void addComponentsToPane() {
//Panel pane = new Panel();
pane.setVisible(true);
...
}
public static void main(String args[]) {
...
f.getContentPane().add(mc.pane);
...
}
qilimazhaluo 2011-01-07
  • 打赏
  • 举报
回复
import java.awt.*;
import javax.swing.*;

public class MyComponent extends JComponent{

MyComponent(){
super();
Panel p1, p2 ;
setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
p1 = new Panel ();p1.setBackground(Color.pink);
p1.setVisible(true);

c.gridx = 0; c.gridy = 0;
c.weightx = 1;c.weighty = 1;

c.ipadx= 0;c.ipady=0;c.fill = GridBagConstraints.BOTH;
add(p1, c);

p2= new Panel ();
p2.setBackground(Color.red); p2.setVisible(true);

c.gridx = 3; c.gridy = 0;
c.weightx = 0.3;c.weighty = 0.3;
c.ipadx= 0;
add(p2, c);

setVisible(true);
}
public static void main (String args[]) {
JFrame f = new JFrame();
MyComponent mc = new MyComponent();
f.getContentPane().add(mc);
f.setSize(400,500);//没有设定大小。。
f.setVisible(true);
}
}



好了这样写就可以了, 谢谢各位了 可以了
逍遥庄主 2011-01-07
  • 打赏
  • 举报
回复
你这是想实现的什么效果?
qybao 2011-01-07
  • 打赏
  • 举报
回复
大概看了一眼
MyComponent mc = new MyComponent(); //mc是否也要设置大小?f.getContentPane()的layout是否也要指定?
p1,p2用的是同一个GridBagConstraints c = new GridBagConstraints();
改变p2的c也就相当于改变p1的c,所以最好分开两个c1,c2分别对应p1,p2
sun78410683 2011-01-07
  • 打赏
  • 举报
回复
本人想测试下 可是在上班 哈哈

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧