也许这是个很难回答的问题,但我对java还不熟悉。我需要一个复选框列表,我发现它在swing中不受支持,但我在这里找到了这个自定义控件
http://www.devx.com/tips/tip/5342
因此,我创建了一个名为checkboxlist的类文件,并将链接中的代码复制到其中:
import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.event.*;
public class CheckBoxList extends JList
{
protected static Border noFocusBorder =
new EmptyBorder(1, 1, 1, 1);
public CheckBoxList()
{
setCellRenderer(new CellRenderer());
addMouseListener(new MouseAdapter()
{
public void mousePressed(MouseEvent e)
{
int index = locationToIndex(e.getPoint());
if (index != -1) {
JCheckBox checkbox = (JCheckBox)
getModel().getElementAt(index);
checkbox.setSelected(
!checkbox.isSelected());
repaint();
}
}
}
);
setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
}
protected class CellRenderer implements ListCellRenderer
{
public Component getListCellRendererComponent(
JList list, Object value, int index,
boolean isSelected, boolean cellHasFocus)
{
JCheckBox checkbox = (JCheckBox) value;
checkbox.setBackground(isSelected ?
getSelectionBackground() : getBackground());
checkbox.setForeground(isSelected ?
getSelectionForeground() : getForeground());
checkbox.setEnabled(isEnabled());
checkbox.setFont(getFont());
checkbox.setFocusPainted(false);
checkbox.setBorderPainted(true);
checkbox.setBorder(isSelected ?
UIManager.getBorder(
"List.focusCellHighlightBorder") : noFocusBorder);
return checkbox;
}
}
}
问题是我不知道如何在gui文件中实现它。我尝试了很多代码,但他们从来没有展示过一个例子。只是
要使用该类,只需示例化它,然后通过调用setlistdata向它传递一个jcheckbox对象数组(或jcheckbox对象的子类)
那么这是否意味着我不会在图形设计视图中看到控件?我的客户希望能够编辑它自己和添加的东西,所以我希望它是容易和图形化的,如果可能的话。如果有人能展示一个示例或给一个很好的提示,我将不胜感激。谢谢!
2条答案
按热度按时间46scxncf1#
代码需要一个jcheckbox对象的列表-所以这是可行的
使用你下面的类的小型swing程序
}
j7dteeu82#
你能告诉我怎么做吗?
使用单列
JTable
以及适当的渲染器和编辑器。基于此示例,下面的代码依赖于类型为的数据值的默认呈现器Boolean.Class
. 这里引用了一个更一般的例子。