JAVA 代码求解
代码如下:
GroupList.java
public class GroupList extends JComponent implements Scrollable {
ArrayList<FolderPanel> tabs = new ArrayList<FolderPanel>();
private GroupListUI listUI;
private int panelHeight = 0;
public GroupList() {
listUI = new GroupListUI();
this.setUI(listUI);
this.setLayout(new FolderGroupLayout());
}
public void addFolder(String text) {
FolderPanel fp = new FolderPanel(text);
tabs.add(fp);
this.add(fp);
}
GroupListUI.java
public class GroupListUI extends ComponentUI {
private static final Color BACK_COLOR = new Color(116,149,226);
public static final int LEFT_PADDING=15;
public static final int TOP_PADDING=15;
private static final int RIGHT_PADDING=15;
private static final int BOTTOM_PADDING=15;
private GroupList list;
public GroupListUI() {
}
@Override
public void installUI(JComponent c) {
c.setOpaque(true);
c.setBackground(BACK_COLOR);
//c.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED));
c.setBorder(BorderFactory.createEmptyBorder(LEFT_PADDING,TOP_PADDING,RIGHT_PADDING,BOTTOM_PADDING));
list = (GroupList)c;
}
@Override
public void paint(Graphics g, JComponent c) {
// TODO Auto-generated method stub
System.out.println("GroupListUI paint"); //这里能调用paint输出
}
FolderPanel.java
public class FolderPanel extends JComponent {
private GroupListUI listUI;
private LabelButton button;
public FolderPanel(String text) {
//this.setBounds(listUI.LEFT_PADDING,listUI.TOP_PADDING,50,50);
this.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED));
button = new LabelButton(text);
this.add(button);
}
}
LabelButton.java
public class LabelButton extends JComponent {
private LabelButtonUI lUI;
public LabelButton() {
this(null);
}
public LabelButton(String text) {
lUI = new LabelButtonUI(text);
this.setUI(lUI);
}
}
LabelButtonUI.java
public class LabelButtonUI extends ComponentUI {
private String text;
private LabelButton button;
public LabelButtonUI() {
}
public LabelButtonUI(String text) {
this.text = text;
}
@Override
public void installUI(JComponent c) {
// TODO Auto-generated method stub
c.setOpaque(true);
c.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED));
button = (LabelButton)c;
System.out.println("LabelButtonUI installUI");
}
@Override
public void paint(Graphics g, JComponent c) {
// TODO Auto-generated method stub
System.out.println("LabelButtonUI paint"); 为什么这里的paint不能被调用,无法输出呢?尝试了好久都没用,本人新手,求各位大神解释
}
}