我需要切换多行按钮,因为其中一些按钮很长。我试图扩展CheckBox以创建SpanToggleCheckBox,但它不起作用,因为没有显示文本。以下代码有什么问题?我怎样才能达到目的呢?
public class SpanToggleCheckBox extends CheckBox {
private TextArea textArea;
/**
* Constructs a toggle checkbox with the given text
*
* @param text to display
*/
public SpanToggleCheckBox(String text) {
textArea = new TextArea(getUIManager().localize(text, text));
textArea.setActAsLabel(true);
textArea.setColumns(textArea.getText().length() + 1);
textArea.setUIID("Label");
textArea.setEditable(false);
textArea.setFocusable(false);
this.setUIID("CheckBox");
super.setToggle(true);
}
/**
* {@inheritDoc}
*/
@Override
public void paint(Graphics g) {
getUIManager().getLookAndFeel().drawTextArea(g, textArea);
}
/**
* {@inheritDoc}
*/
@Override
protected Dimension calcPreferredSize() {
return getUIManager().getLookAndFeel().getTextAreaSize(textArea, true);
}
/**
* Shorthand for creating the SpanToggleCheckBox
*
* @param text the text for the button
* @return a check box
*/
public static SpanToggleCheckBox createToggle(String text) {
SpanToggleCheckBox cb = new SpanToggleCheckBox(text);
return cb;
}
}
答案 0 :(得分:1)
我用不同的approch解决了这个问题。 在代码中,我替换为代码行:
Component button = CheckBox.createToggle(label);
这些行:
CheckBox myBtn = CheckBox.createToggle("text");
Container container = new Container(BoxLayout.y());
container.setLeadComponent(myBtn);
SpanLabel multiLineText = new SpanLabel(label);
container.add(multiLineText);
通过这种方式,我得到了一个像Toggle Button一样的Container,它包含一个带有多行文本的SpanLabel。