不知道为什么我添加了个自定义的JComponent和自定义JLabel到JFrame中都可以显示 但我又加了个自定义JComponent就不能显示了 老是只显示刚才前边加的两个莫名奇妙 而我如果把第三个加的那个自定义子类改成继承JLabel(同时在其构造器中调用JLabel的构造器)就可以了 郁闷 下边是代码 希望比较了解的哥们来解答下 我在写一个2d游戏心急啊private ScreenFrame() {
setSize(frameW, frameH);
setTitle("Designer");
// Create Helper
talker = new Talker();
tools = new Tools();
canvas = new GameCanvas(this, tools, talker);
// Get panel
Container pane = getContentPane();
// Add Helper
pane.add(talker, BorderLayout.SOUTH);
pane.add(tools, BorderLayout.WEST);
pane.add(canvas, BorderLayout.CENTER);
// Say "Hello!"
talker.sayWrong("Welcome to my world!");
}不知道为什么老是不显示那个tools(就是我说的第三个加进来,且不显示的类)
setSize(frameW, frameH);
setTitle("Designer");
// Create Helper
talker = new Talker();
tools = new Tools();
canvas = new GameCanvas(this, tools, talker);
// Get panel
Container pane = getContentPane();
// Add Helper
pane.add(talker, BorderLayout.SOUTH);
pane.add(tools, BorderLayout.WEST);
pane.add(canvas, BorderLayout.CENTER);
// Say "Hello!"
talker.sayWrong("Welcome to my world!");
}不知道为什么老是不显示那个tools(就是我说的第三个加进来,且不显示的类)
import java.io.File;
import java.io.IOException;
import java.awt.*;
import javax.imageio.ImageIO;
import javax.swing.*;public class Tools extends JComponent{
//
//Fields
//
private Chooser chooser; //
//Constructor
//
Tools() {
super();
chooser = new Chooser();
}
//
// Method
//
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawString("sb", 10, 10);
System.out.println("pp");
}
public Chooser getChooser() {
return chooser;
}
}
这个就是tools不知道为什么不显示
import javax.swing.JLabel;public class Talker extends JLabel{ //
// Constructor
//
Talker() {
} //
// Method
//
public void sayWrong(String what) {
this.setBorder(BorderFactory.createLineBorder(Color.RED));
this.setText("#Wrong!#: " + what);
this.setForeground(Color.RED);
}
}我不是很懂手动设置 我在 tools的构造器里加了setSize方法 结果还是不显示
可是为什么我的Talker类也没有设置这个却可以正常显示啊
tools.setPreferredSize(new Dimension(width,height)); // 换成你想要的大小
ComponentUI是一个抽象类,getPreferredSize返回null,由子类实现.
具体的计算大小一般由各个 look & feel实现。