急!!!如何将JList和CheckBox一起使用? 一个是轻量级的组件,一个是重量级的组件,放在一起不是很好吧?最好用JComboBox来替换掉CheckBox!!!!!!!!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用JComboBox来替换掉CheckBox,那该怎么做啊?有谁能贴点代码!谢谢了 去http://www2.gol.com/users/tame/看看,那儿有JList和JCheckBox的例子 来了呵呵费了半天事分拿来import java.awt.*;import java.awt.event.*;import java.util.*;import javax.swing.*;import javax.swing.border.*;import javax.swing.event.*;public class CheckBoxList extends JFrame { protected JList m_list; protected JLabel m_total; public CheckBoxList() { super("Swing List [Check boxes]"); setSize(260, 240); getContentPane().setLayout(new FlowLayout()); InstallData[] options = { new InstallData("Program executable", 118), new InstallData("Help files", 52), new InstallData("Tools and converters", 83), new InstallData("Source code", 133) }; m_list = new JList(options); CheckListCellRenderer renderer = new CheckListCellRenderer(); m_list.setCellRenderer(renderer); m_list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); CheckListener lst = new CheckListener(this); m_list.addMouseListener(lst); m_list.addKeyListener(lst); JScrollPane ps = new JScrollPane(); ps.getViewport().add(m_list); m_total = new JLabel("Space required: 0K"); JPanel p = new JPanel(); p.setLayout(new BorderLayout()); p.add(ps, BorderLayout.CENTER); p.add(m_total, BorderLayout.SOUTH); p.setBorder(new TitledBorder(new EtchedBorder(), "Please select options:") ); getContentPane().add(p); WindowListener wndCloser = new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }; addWindowListener(wndCloser); setVisible(true); recalcTotal(); } public void recalcTotal() { ListModel model = m_list.getModel(); int total = 0; for (int k=0; k<model.getSize(); k++) { InstallData data = (InstallData)model.getElementAt(k); if (data.isSelected()) total += data.getSize(); } m_total.setText("Space required: "+total+"K"); } public static void main(String argv[]) { new CheckBoxList(); }}class CheckListCellRenderer extends JCheckBox implements ListCellRenderer{ protected static Border m_noFocusBorder = new EmptyBorder(1, 1, 1, 1); public CheckListCellRenderer() { super(); setOpaque(true); setBorder(m_noFocusBorder); } public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { setText(value.toString()); setBackground(isSelected ? list.getSelectionBackground() : list.getBackground()); setForeground(isSelected ? list.getSelectionForeground() : list.getForeground()); InstallData data = (InstallData)value; setSelected(data.isSelected()); setFont(list.getFont()); setBorder((cellHasFocus) ? UIManager.getBorder("List.focusCellHighlightBorder") : m_noFocusBorder); return this; }}class CheckListener implements MouseListener, KeyListener{ protected CheckBoxList m_parent; protected JList m_list; public CheckListener(CheckBoxList parent) { m_parent = parent; m_list = parent.m_list; } public void mouseClicked(MouseEvent e) { if (e.getX() < 20) doCheck(); } public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void keyPressed(KeyEvent e) { if (e.getKeyChar() == ' ') doCheck(); } public void keyTyped(KeyEvent e) {} public void keyReleased(KeyEvent e) {} protected void doCheck() { int index = m_list.getSelectedIndex(); if (index < 0) return; InstallData data = (InstallData)m_list.getModel(). getElementAt(index); data.invertSelected(); m_list.repaint(); m_parent.recalcTotal(); }}class InstallData{ protected String m_name; protected int m_size; protected boolean m_selected; public InstallData(String name, int size) { m_name = name; m_size = size; m_selected = false; } public String getName() { return m_name; } public int getSize() { return m_size; } public void setSelected(boolean selected) { m_selected = selected;} public void invertSelected() { m_selected = !m_selected; } public boolean isSelected() { return m_selected; } public String toString() { return m_name+" ("+m_size+" K)"; }} 怎样写socket可以连接互联网上的两台电脑 不懂这段代码为什么这么写,帮解释解释 创建对象和清理对象内容哪一个好?? java新手问题 用摄象头进行视频聊天是怎么样实现的? 装不上JDK 1.4。。。 java.exe与javaw.exe区别 Error: could not find java.dll 怎样用java语言编程,修改注册表 我的jdk1.3里面怎么看不到什么java.lang等包呢 重金酬谢 再问环境变量的问题。
分拿来
import java.awt.*;
import java.awt.event.*;
import java.util.*;import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;public class CheckBoxList
extends JFrame
{ protected JList m_list;
protected JLabel m_total; public CheckBoxList()
{
super("Swing List [Check boxes]");
setSize(260, 240);
getContentPane().setLayout(new FlowLayout()); InstallData[] options = {
new InstallData("Program executable", 118),
new InstallData("Help files", 52),
new InstallData("Tools and converters", 83),
new InstallData("Source code", 133)
}; m_list = new JList(options);
CheckListCellRenderer renderer = new CheckListCellRenderer();
m_list.setCellRenderer(renderer);
m_list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); CheckListener lst = new CheckListener(this);
m_list.addMouseListener(lst);
m_list.addKeyListener(lst); JScrollPane ps = new JScrollPane();
ps.getViewport().add(m_list); m_total = new JLabel("Space required: 0K"); JPanel p = new JPanel();
p.setLayout(new BorderLayout());
p.add(ps, BorderLayout.CENTER);
p.add(m_total, BorderLayout.SOUTH);
p.setBorder(new TitledBorder(new EtchedBorder(),
"Please select options:") );
getContentPane().add(p); WindowListener wndCloser = new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
};
addWindowListener(wndCloser);
setVisible(true); recalcTotal();
} public void recalcTotal()
{
ListModel model = m_list.getModel();
int total = 0;
for (int k=0; k<model.getSize(); k++)
{
InstallData data = (InstallData)model.getElementAt(k);
if (data.isSelected())
total += data.getSize();
}
m_total.setText("Space required: "+total+"K");
} public static void main(String argv[])
{
new CheckBoxList();
}
}class CheckListCellRenderer
extends JCheckBox
implements ListCellRenderer
{
protected static Border m_noFocusBorder =
new EmptyBorder(1, 1, 1, 1); public CheckListCellRenderer()
{
super();
setOpaque(true);
setBorder(m_noFocusBorder);
} public Component getListCellRendererComponent(JList list,
Object value, int index, boolean isSelected, boolean cellHasFocus)
{
setText(value.toString()); setBackground(isSelected ? list.getSelectionBackground() :
list.getBackground());
setForeground(isSelected ? list.getSelectionForeground() :
list.getForeground()); InstallData data = (InstallData)value;
setSelected(data.isSelected()); setFont(list.getFont());
setBorder((cellHasFocus) ?
UIManager.getBorder("List.focusCellHighlightBorder")
: m_noFocusBorder); return this;
}
}class CheckListener
implements MouseListener, KeyListener
{
protected CheckBoxList m_parent;
protected JList m_list; public CheckListener(CheckBoxList parent)
{
m_parent = parent;
m_list = parent.m_list;
} public void mouseClicked(MouseEvent e)
{
if (e.getX() < 20)
doCheck();
} public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void keyPressed(KeyEvent e)
{
if (e.getKeyChar() == ' ')
doCheck();
} public void keyTyped(KeyEvent e) {}
public void keyReleased(KeyEvent e) {} protected void doCheck()
{
int index = m_list.getSelectedIndex();
if (index < 0)
return;
InstallData data = (InstallData)m_list.getModel().
getElementAt(index);
data.invertSelected();
m_list.repaint();
m_parent.recalcTotal();
}
}class InstallData
{
protected String m_name;
protected int m_size;
protected boolean m_selected; public InstallData(String name, int size)
{
m_name = name;
m_size = size;
m_selected = false;
} public String getName() { return m_name; } public int getSize() { return m_size; } public void setSelected(boolean selected) { m_selected = selected;} public void invertSelected() { m_selected = !m_selected; } public boolean isSelected() { return m_selected; } public String toString() { return m_name+" ("+m_size+" K)"; }
}