比如:
public class MFrame implements ActionListener {
private JFrame f;
private JMenuBar mb;
private JMenu m1;
private JMenu m2;
private JMenu m3;
private JMenu m4;
private JMenuItem mi1;
private JMenuItem mi2;
private JMenuItem mi3;
private JMenuItem mi4;
private JMenuItem mi5;
private JMenuItem mi6;
private JMenuItem mi7;
private JMenuItem mi8;
private JRadioButton r1;
private JRadioButton r2;
private JButton Next, Close;
private JLabel l1, l2, S1, S2;
private JTextField t1, t2;
private String ss = "";
public void go() {
f = new JFrame("");
mb = new JMenuBar();
m1 = new JMenu("账号管理");
mb.add(m1);
mi1 = new JMenuItem("新建账号/删除账号");
mi3 = new JMenuItem("查询账号");
mi4 = new JMenuItem("显示账号");
mi1.addActionListener(this);
mi3.addActionListener(this);
mi4.addActionListener(this);
m1.add(mi1);
m1.add(mi3);
m1.add(mi4);
m2.add(mi5);
f.setJMenuBar(mb);
f.setLocation(450, 250);
f.setSize(400, 400);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent ae) {
if (ae.getActionCommand().equals("显示账号")) {
xianShi();
}
if (ae.getActionCommand().equals("查询账号")) {
chaXun();
}
}
private void cunQ() {
f = new JFrame("MINI银行管理系统");
JPanel pan1 = new JPanel();
JPanel pan2 = new JPanel();
JPanel pan3 = new JPanel();
JPanel pan4 = new JPanel();
JPanel pan5 = new JPanel();
l1 = new JLabel("账 号:");
l2 = new JLabel("金 额:");
S1 = new JLabel();
S2 = new JLabel();
t1 = new JTextField(15);
t2 = new JTextField(15);
JRadioButton r1 = new JRadioButton("存钱");
JRadioButton r2 = new JRadioButton("取钱");
Next = new JButton("确定");
Close = new JButton("重置");
r1.addActionListener(this);
r2.addActionListener(this);
Next.addActionListener(this);
Close.addActionListener(this);
pan4.add(Next);
pan4.add(Close);
pan2.add(l1);
pan2.add(t1);
pan3.add(l2);
pan3.add(t2);
pan5.add(r1);
pan5.add(r2);
pan1.add(pan5);
pan1.add(pan2);
pan1.add(pan3);
pan1.add(pan4);
pan1.setLayout(new GridLayout(6, 1, 10, 10));
pan1.setVisible(true);
f.add(pan1);
}
private void chaXun() {
JPanel pan1 = new JPanel();
JPanel pan2 = new JPanel();
JPanel pan3 = new JPanel();
JPanel pan4 = new JPanel();
JPanel pan5 = new JPanel();
f.remove(pan1);
l1 = new JLabel("账 号:");
S1 = new JLabel();
t1 = new JTextField(15);
Next = new JButton("查询");
Close = new JButton("重置");
Next.addActionListener(this);
Close.addActionListener(this);
pan4.add(Next);
pan4.add(Close);
pan2.add(l1);
pan2.add(t1);
pan1.add(pan2);
pan1.add(pan4);
pan1.setLayout(new GridLayout(6, 1, 10, 10));
pan1.setVisible(true);
f.add(pan1);
}
大概意思就是这样 如果 第一个监听执行了 f.add(pan1) 第2个再执行一个f.add(pan2) 2个Jpanel 就会重叠在一起 有没有什么清空的方法呢?
还有一个问题 就是 同一个界面里面有JRadioButton 和 Button 我监听要怎么写才行?
比如 存钱 取钱 用JRadioButton 来选取
选取以后 用Button(“确定”)监听 然后执行 存钱或者取钱的算法 要如何做呢 谢谢大家了
8 个解决方案
#1
你的程序好像少寫了xianShi()方法
執行第二個之前dispose第一個
關於JRadioButton 和 Button 的問題
在執行JRadioButton前默認Button不可用
執行之後Button才可用
讓它們關聯起來
沒學多久
也不知道想的方法怎樣
執行第二個之前dispose第一個
關於JRadioButton 和 Button 的問題
在執行JRadioButton前默認Button不可用
執行之後Button才可用
讓它們關聯起來
沒學多久
也不知道想的方法怎樣
#2
dispose 只能用在 JFrame里吧 而我要关闭掉的是 一个加载在 JFrame 上的panel 然后重新加载第二个 panel
下面没看懂
在執行JRadioButton前默認Button不可用
執行之後Button才可用
讓它們關聯起來
下面没看懂
在執行JRadioButton前默認Button不可用
執行之後Button才可用
讓它們關聯起來
#3
多线程去实现
#4
猫猫,你在学GUI?
#5
是啊 正在学 想的我头疼 多线程?怎么实现?
#6
你运行过你的程序吗?问题挺多的诶。
我也是初学者,我只能和你说说我的看法了。
首先:
如果只有一个JFrame,可以直接将公共类写成
public class MFrame extends JFrame implements ActionListener{}
然后我觉得你的定义的组件太累赘了。
如:可以写成
private JFrame f;
private JMenuBar mb;
private JMenu m1,m2,m3,m4;
private JMenuItem mi1,mi2,mi3,mi4,mi5,mi6,mi7,mi8;
private JRadioButton r1,r2;
private JButton Next, Close;
private JLabel l1, l2, S1, S2;
private JTextField t1, t2;
private String ss = "";
还有:就是先要执行f.setJMenuBar(mb);才可以在菜单栏再假东西的。
还有就是JRadioButton的问题了,你定义的两个按钮是单选的,是互斥的,就是不可以同时被选择
你要说明的呀。
ButtonGroup buttongroup = new ButtonGroup();
buttongroup.add(r1);
buttongroup.add(r2);
pan5.add(r1);
pan5.add(r2);
还有一个小建议,就是以后写程序加些注释吧,取组件名的时候要有意义,让别人知道那个是代表什么。
呵呵,加油
我也是初学者,我只能和你说说我的看法了。
首先:
如果只有一个JFrame,可以直接将公共类写成
public class MFrame extends JFrame implements ActionListener{}
然后我觉得你的定义的组件太累赘了。
如:可以写成
private JFrame f;
private JMenuBar mb;
private JMenu m1,m2,m3,m4;
private JMenuItem mi1,mi2,mi3,mi4,mi5,mi6,mi7,mi8;
private JRadioButton r1,r2;
private JButton Next, Close;
private JLabel l1, l2, S1, S2;
private JTextField t1, t2;
private String ss = "";
还有:就是先要执行f.setJMenuBar(mb);才可以在菜单栏再假东西的。
还有就是JRadioButton的问题了,你定义的两个按钮是单选的,是互斥的,就是不可以同时被选择
你要说明的呀。
ButtonGroup buttongroup = new ButtonGroup();
buttongroup.add(r1);
buttongroup.add(r2);
pan5.add(r1);
pan5.add(r2);
还有一个小建议,就是以后写程序加些注释吧,取组件名的时候要有意义,让别人知道那个是代表什么。
呵呵,加油
#7
那个程序啊…… 我只是想说一下问题而已 因为全部的程序太长了
第一个问题 的那个共用一个JFrame 几个Panel 相互替换的问题 不知道怎么做
第一个问题 的那个共用一个JFrame 几个Panel 相互替换的问题 不知道怎么做
#8
我們是用SWT做界面的
裡面組件可以設置 setEnable(false)或setEnable(true)
在監聽JRadioButton前Button setEnable(false)那樣就不能點了
執行之後Button setEnable(true)就可以點了
這樣就能關聯起來 就像JRadioButton的功能一樣
按鈕互斥
不過你用Swing做界面我沒發現裡面能setEnable的
不知道直接在代碼里添加是否可行
多線程的問題方法想的過來
就是自己實現起來有難度
不知道你第一個panel有什麽用
不知道是不是線程1執行add(pan1)線程2執行add(pan2)
執行完第一個就讓線程進入死亡態
再執行第二個
加載第二個panel前你看看能不能remove 第一個panel
這個不需要寫多線程
取組件名就用拼音寫完整,不論有多長
以前嫌太長用4個字母縮寫4個拼音老大都讓改了
現在可能有些東西學的不太懂
過段時間回頭看看就覺得思路清晰簡單多了
裡面組件可以設置 setEnable(false)或setEnable(true)
在監聽JRadioButton前Button setEnable(false)那樣就不能點了
執行之後Button setEnable(true)就可以點了
這樣就能關聯起來 就像JRadioButton的功能一樣
按鈕互斥
不過你用Swing做界面我沒發現裡面能setEnable的
不知道直接在代碼里添加是否可行
多線程的問題方法想的過來
就是自己實現起來有難度
不知道你第一個panel有什麽用
不知道是不是線程1執行add(pan1)線程2執行add(pan2)
執行完第一個就讓線程進入死亡態
再執行第二個
加載第二個panel前你看看能不能remove 第一個panel
這個不需要寫多線程
取組件名就用拼音寫完整,不論有多長
以前嫌太長用4個字母縮寫4個拼音老大都讓改了
現在可能有些東西學的不太懂
過段時間回頭看看就覺得思路清晰簡單多了
#1
你的程序好像少寫了xianShi()方法
執行第二個之前dispose第一個
關於JRadioButton 和 Button 的問題
在執行JRadioButton前默認Button不可用
執行之後Button才可用
讓它們關聯起來
沒學多久
也不知道想的方法怎樣
執行第二個之前dispose第一個
關於JRadioButton 和 Button 的問題
在執行JRadioButton前默認Button不可用
執行之後Button才可用
讓它們關聯起來
沒學多久
也不知道想的方法怎樣
#2
dispose 只能用在 JFrame里吧 而我要关闭掉的是 一个加载在 JFrame 上的panel 然后重新加载第二个 panel
下面没看懂
在執行JRadioButton前默認Button不可用
執行之後Button才可用
讓它們關聯起來
下面没看懂
在執行JRadioButton前默認Button不可用
執行之後Button才可用
讓它們關聯起來
#3
多线程去实现
#4
猫猫,你在学GUI?
#5
是啊 正在学 想的我头疼 多线程?怎么实现?
#6
你运行过你的程序吗?问题挺多的诶。
我也是初学者,我只能和你说说我的看法了。
首先:
如果只有一个JFrame,可以直接将公共类写成
public class MFrame extends JFrame implements ActionListener{}
然后我觉得你的定义的组件太累赘了。
如:可以写成
private JFrame f;
private JMenuBar mb;
private JMenu m1,m2,m3,m4;
private JMenuItem mi1,mi2,mi3,mi4,mi5,mi6,mi7,mi8;
private JRadioButton r1,r2;
private JButton Next, Close;
private JLabel l1, l2, S1, S2;
private JTextField t1, t2;
private String ss = "";
还有:就是先要执行f.setJMenuBar(mb);才可以在菜单栏再假东西的。
还有就是JRadioButton的问题了,你定义的两个按钮是单选的,是互斥的,就是不可以同时被选择
你要说明的呀。
ButtonGroup buttongroup = new ButtonGroup();
buttongroup.add(r1);
buttongroup.add(r2);
pan5.add(r1);
pan5.add(r2);
还有一个小建议,就是以后写程序加些注释吧,取组件名的时候要有意义,让别人知道那个是代表什么。
呵呵,加油
我也是初学者,我只能和你说说我的看法了。
首先:
如果只有一个JFrame,可以直接将公共类写成
public class MFrame extends JFrame implements ActionListener{}
然后我觉得你的定义的组件太累赘了。
如:可以写成
private JFrame f;
private JMenuBar mb;
private JMenu m1,m2,m3,m4;
private JMenuItem mi1,mi2,mi3,mi4,mi5,mi6,mi7,mi8;
private JRadioButton r1,r2;
private JButton Next, Close;
private JLabel l1, l2, S1, S2;
private JTextField t1, t2;
private String ss = "";
还有:就是先要执行f.setJMenuBar(mb);才可以在菜单栏再假东西的。
还有就是JRadioButton的问题了,你定义的两个按钮是单选的,是互斥的,就是不可以同时被选择
你要说明的呀。
ButtonGroup buttongroup = new ButtonGroup();
buttongroup.add(r1);
buttongroup.add(r2);
pan5.add(r1);
pan5.add(r2);
还有一个小建议,就是以后写程序加些注释吧,取组件名的时候要有意义,让别人知道那个是代表什么。
呵呵,加油
#7
那个程序啊…… 我只是想说一下问题而已 因为全部的程序太长了
第一个问题 的那个共用一个JFrame 几个Panel 相互替换的问题 不知道怎么做
第一个问题 的那个共用一个JFrame 几个Panel 相互替换的问题 不知道怎么做
#8
我們是用SWT做界面的
裡面組件可以設置 setEnable(false)或setEnable(true)
在監聽JRadioButton前Button setEnable(false)那樣就不能點了
執行之後Button setEnable(true)就可以點了
這樣就能關聯起來 就像JRadioButton的功能一樣
按鈕互斥
不過你用Swing做界面我沒發現裡面能setEnable的
不知道直接在代碼里添加是否可行
多線程的問題方法想的過來
就是自己實現起來有難度
不知道你第一個panel有什麽用
不知道是不是線程1執行add(pan1)線程2執行add(pan2)
執行完第一個就讓線程進入死亡態
再執行第二個
加載第二個panel前你看看能不能remove 第一個panel
這個不需要寫多線程
取組件名就用拼音寫完整,不論有多長
以前嫌太長用4個字母縮寫4個拼音老大都讓改了
現在可能有些東西學的不太懂
過段時間回頭看看就覺得思路清晰簡單多了
裡面組件可以設置 setEnable(false)或setEnable(true)
在監聽JRadioButton前Button setEnable(false)那樣就不能點了
執行之後Button setEnable(true)就可以點了
這樣就能關聯起來 就像JRadioButton的功能一樣
按鈕互斥
不過你用Swing做界面我沒發現裡面能setEnable的
不知道直接在代碼里添加是否可行
多線程的問題方法想的過來
就是自己實現起來有難度
不知道你第一個panel有什麽用
不知道是不是線程1執行add(pan1)線程2執行add(pan2)
執行完第一個就讓線程進入死亡態
再執行第二個
加載第二個panel前你看看能不能remove 第一個panel
這個不需要寫多線程
取組件名就用拼音寫完整,不論有多長
以前嫌太長用4個字母縮寫4個拼音老大都讓改了
現在可能有些東西學的不太懂
過段時間回頭看看就覺得思路清晰簡單多了