//代码片段,是用我说的笨方法,milev1\2\3已定义,是CheckboxMenuItem对象,不相关代码已经省略
public void itemStateChanged(ItemEvent e)
{
if(e.getSource()==milev1)
{
milev2.setState(false);
milev3.setState(false);
}
else
if(e.getSource()==milev2)
{
milev1.setState(false);
milev3.setState(false);
}
else
{
milev1.setState(false);
milev2.setState(false);
}
}
//其他办法?
public void itemStateChanged(ItemEvent e)
{
if(e.getSource()==milev1)
{
milev2.setState(false);
milev3.setState(false);
}
else
if(e.getSource()==milev2)
{
milev1.setState(false);
milev3.setState(false);
}
else
{
milev1.setState(false);
milev2.setState(false);
}
}
//其他办法?
JRadioButton[] jrb=new JRadioButton[3];
ButtonGroup group=new ButtonGroup(); //实现单选
for(int i=0;i<3;i++){
jrb[i]=new JRadioButton();
group.add(jrb[i]);
}
这样就可以实现单选功能了.
private JCheckBox jCheckBox1 = new JCheckBox();
private JCheckBox jCheckBox2 = new JCheckBox();
jCheckBox1.setSelected(true);
jCheckBox1.setText("jCheckBox1");
jCheckBox2.setText("jCheckBox2");
this.getContentPane().add(jCheckBox1, null);
this.getContentPane().add(jCheckBox2, null);
buttonGroup1.add(jCheckBox1);
buttonGroup1.add(jCheckBox2);*******************************************************
我对swing不熟悉,查了一下,你们说的JRadioButton好象都是单选按钮,
JCheckBox是复选框,可以通过分组实现单选(多选一)。但我想做的是“菜单”里的单选菜单项。
1、用swt能实现吗?
2、如果用swing应该是JCheckBoxMenuItem类,怎么做?
类似于:
---------——
| √ 简单 |
| 中等 |
| 复杂 |
————————
使这三个菜单项,用户只能选中一个。
使复选菜单项实现单选。
1、能用awt (CheckBoxMenuItem)吗?如何做?
2、如果用swing应该是JCheckBoxMenuItem类吧,怎么做?
******************************************************
先定义:
private JMenuBar menuBar = new JMenuBar();
private JMenu Menu = new JMenu();
private JCheckBoxMenuItem radioBtnItem1 = new JCheckBoxMenuItem();
private JCheckBoxMenuItem radioBtnItem2 = new JCheckBoxMenuItem();
private JCheckBoxMenuItem radioBtnItem3 = new JCheckBoxMenuItem();接着设置
Menu.setText("file");
radioBtnItem1.setText("简单");
radioBtnItem2.setText("中等");
radioBtnItem3.setText("复杂");
menuBar.add(Menu);
Menu.add(radioBtnItem1);
Menu.add(radioBtnItem2);
Menu.add(radioBtnItem3);********************************************************可以揭帖了,呵呵。
谢谢你来!但是。。你的代码还是多选。you look:
import javax.swing.*;
public class G
{
private JFrame f;
private JMenuBar menuBar;
private JMenu menu;
private JCheckBoxMenuItem radioBtnItem1;
private JCheckBoxMenuItem radioBtnItem2;
private JCheckBoxMenuItem radioBtnItem3;
public G()
{
f=new JFrame("Test");
menuBar = new JMenuBar();
menu = new JMenu();
radioBtnItem1 = new JCheckBoxMenuItem();
radioBtnItem2 = new JCheckBoxMenuItem();
radioBtnItem3 = new JCheckBoxMenuItem();
menu.setText("file");
radioBtnItem1.setText("简单");
radioBtnItem2.setText("中等");
radioBtnItem3.setText("复杂");
menuBar.add(menu);
menu.add(radioBtnItem1);
menu.add(radioBtnItem2);
menu.add(radioBtnItem3);
f.setJMenuBar(menuBar);////////
f.setSize(200,300);
f.show();
}
public static void main(String[] args)
{
G g=new G();
}
}//:( 三个都可以选上啊!我要单选。
你的想法就和我在一楼写的代码思想一样了。可以解决。但总觉得不正宗,呵呵。总感觉有个什么类可以完成吧。
**********************************************package override;import javax.swing.*;
import java.awt.event.*;
public class G extends JFrame
{
// private JFrame f;
private JMenuBar menuBar=new JMenuBar();
private JMenu menu;
private JCheckBoxMenuItem radioBtnItem1;
private JCheckBoxMenuItem radioBtnItem2;
private JCheckBoxMenuItem radioBtnItem3;
private JMenu jMenu1 = new JMenu(); public G()
{
// f=new JFrame("Test");// this.setSize(200,300);
// this.show();
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
} } public static void main(String[] args)
{
G g=new G();
g.setSize(400,300);
g.setVisible(true);
}
private void jbInit() throws Exception {
menuBar = new JMenuBar();
menu = new JMenu();
radioBtnItem1 = new JCheckBoxMenuItem();
radioBtnItem2 = new JCheckBoxMenuItem();
radioBtnItem3 = new JCheckBoxMenuItem();
menu.setText("file");
menuBar.add(menu);
menu.add(radioBtnItem1);
menu.add(radioBtnItem2);
menu.add(radioBtnItem3);
this.setJMenuBar(menuBar);////////
radioBtnItem1.setText("简单"); radioBtnItem1.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(ItemEvent e) {
radioBtnItem1_itemStateChanged(e);
}
});
radioBtnItem2.setText("中等");
radioBtnItem2.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(ItemEvent e) {
radioBtnItem2_itemStateChanged(e);
}
});
radioBtnItem3.setText("复杂");
radioBtnItem3.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(ItemEvent e) {
radioBtnItem3_itemStateChanged(e);
}
}); } void radioBtnItem1_itemStateChanged(ItemEvent e) {
if(radioBtnItem1.isSelected()==true){
radioBtnItem2.setSelected(false);
radioBtnItem3.setSelected(false);
} } void radioBtnItem2_itemStateChanged(ItemEvent e) {
if(radioBtnItem2.isSelected()==true){
radioBtnItem1.setSelected(false);
radioBtnItem3.setSelected(false);
}
} void radioBtnItem3_itemStateChanged(ItemEvent e) {
if(radioBtnItem3.isSelected()==true){
radioBtnItem1.setSelected(false);
radioBtnItem2.setSelected(false);
}
}}
晕啊,你的办法和我一楼说的不也一样嘛。嘿嘿(真的谢谢你,别走啊,继续)
1、为什么有jbInit这个方法继承Exception类。
2、radioBtnItem1.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(ItemEvent e) {
radioBtnItem1_itemStateChanged(e);
}
});
三段这样的代码我不懂。
事件处理里radioBtnItem1_itemStateChanged(e);是什么意思?
2、radioBtnItem1.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(ItemEvent e) {
radioBtnItem1_itemStateChanged(e);
}
});
是给每一个radioBtnItem都加一个listenser,来触发这个事件。 没有什么不好理解的呀。***************************************************************************你有msn么?我加你。**********************************可以揭帖了,呵呵。