我定义了一个按钮和一个文本的方法,作为公共部分,在JPanel里面分别调用了两次按钮和文本的方法!我想做出的效果是:点击“事件一”,输入文本,在“内容一”处显示输入的内容点击“事件二”,输入文本,在“内容二”处显示输入的内容按钮和文本的方法只能定义一次,就是把按钮和文本的方法作为公共部分,提高代码的重用度!我做出来的效果是,点击“事件一”和“事件二”,内容都显示在内容二上!加粗部分的代码怎么改啊?按钮和文本的方法做成公共部分!不重复定义!怎么弄啊?
下面是代码:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.*;public class EventDemo extends JFrame {
//private static final long serialVersionUID = 1L;
private JPanel jpl = null;
private JButton jbt = null;
private JLabel jlb = null;
public EventDemo(String title){
super();
setSize(300,200);
setTitle(title);
setContentPane(getJPane());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public JPanel getJPane(){
if(jpl == null){
jpl = new JPanel();
jpl.setLayout(null);
jpl.add(getJbt("事件一",20,40,80,30));
jpl.add(getJlb("内容一",110,40,150,20));
jpl.add(getJbt("事件二",20,80,80,30));
jpl.add(getJlb("内容二",110,80,150,20));
}
return jpl;
}
//按钮
public JButton getJbt(String txt,int x,int y,int w,int h){
jbt = new JButton();
jbt.setText(txt);
jbt.setBounds(x, y, w, h);
jbt.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
String input = JOptionPane.showInputDialog(this,"请输入一个字符串");
if(input!=null){
jlb.setText(input);
}
}
});
return jbt;
}
//文本框
public JLabel getJlb(String text,int x,int y,int w,int h){
jlb = new JLabel();
jlb.setText(text);
jlb.setVerticalAlignment(SwingConstants.TOP);
jlb.setBounds(x, y, w, h);
return jlb;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
EventDemo eve = new EventDemo("事件");
eve.setVisible(true);
}}
下面是代码:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.*;public class EventDemo extends JFrame {
//private static final long serialVersionUID = 1L;
private JPanel jpl = null;
private JButton jbt = null;
private JLabel jlb = null;
public EventDemo(String title){
super();
setSize(300,200);
setTitle(title);
setContentPane(getJPane());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public JPanel getJPane(){
if(jpl == null){
jpl = new JPanel();
jpl.setLayout(null);
jpl.add(getJbt("事件一",20,40,80,30));
jpl.add(getJlb("内容一",110,40,150,20));
jpl.add(getJbt("事件二",20,80,80,30));
jpl.add(getJlb("内容二",110,80,150,20));
}
return jpl;
}
//按钮
public JButton getJbt(String txt,int x,int y,int w,int h){
jbt = new JButton();
jbt.setText(txt);
jbt.setBounds(x, y, w, h);
jbt.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
String input = JOptionPane.showInputDialog(this,"请输入一个字符串");
if(input!=null){
jlb.setText(input);
}
}
});
return jbt;
}
//文本框
public JLabel getJlb(String text,int x,int y,int w,int h){
jlb = new JLabel();
jlb.setText(text);
jlb.setVerticalAlignment(SwingConstants.TOP);
jlb.setBounds(x, y, w, h);
return jlb;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
EventDemo eve = new EventDemo("事件");
eve.setVisible(true);
}}
解决方案 »
- 一段代码,谁帮忙谢谢每句的功能
- 判断数字是否连续问题!!
- 接口调用连接数据库方法 连续调用一次以上 尽出现令人头疼的错误
- 这个函数有意义吗?
- 请问一下Java里面的setString()方法和getString()方法各有什么用``和两者的区别?
- 关一JLabler 的问题!
- 急高手帮忙(在线等)
- 一个多线程分别打印abc的问题
- 只有北极星高手能进来呦~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 关于javamail的小问题,解决力送100分!!!(jar打包问题的分已结)
- 要在目标文件里写内容,就是没成功
- 开发其于SAX方式的接口文件读取类,读取之后将结构存放在数据库中;
public class EventDemo extends JFrame {
//private static final long serialVersionUID = 1L;
private JPanel jpl = null;
// private JButton jbt = null;
// private JLabel jlb = null; private JButton[] jbt = null;
private JLabel[] jlb = null; public EventDemo(String title){
super();
setSize(300,200);
setTitle(title);
setContentPane(getJPane());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public JPanel getJPane(){
if(jpl == null){
jpl = new JPanel();
jpl.setLayout(null); jbt = getJbt(new String[]{"事件一", "事件二"},new int[]{20, 20}, new int[]{40, 80}, new int[]{80, 80},new int[]{30, 30});
jlb = getJlb(new String[]{"内容一", "内容二"},new int[]{110, 110}, new int[]{40, 80},new int[]{150, 150},new int[]{20, 20}); System.out.println(jbt.length);
for (int i = 0; i < jbt.length; i++) {
jpl.add(jbt[i]);
jpl.add(jlb[i]);
} }
return jpl;
} //按钮
public JButton[] getJbt(String[] txt,int[] x,int[] y,int[] w,int[] h){ final JButton[] buttons = new JButton[txt.length]; for (int i = 0; i < txt.length; i++) { buttons[i] = new JButton();
buttons[i].setText(txt[i]);
buttons[i].setBounds(x[i], y[i], w[i], h[i]); action(buttons[i], i);
} return buttons;
} private void action(JButton button, final int index) { button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {
String input = JOptionPane.showInputDialog(this,"请输入一个字符串");
if(input!=null){
jlb[index].setText(input);
}
} });
} //文本框
public JLabel[] getJlb(String[] text,int[] x,int[] y,int[] w,int[] h){ final JLabel[] label = new JLabel[text.length]; for (int i = 0; i < label.length; i++) { label[i] = new JLabel();
label[i].setText(text[i]);
label[i].setVerticalAlignment(SwingConstants.TOP);
label[i].setBounds(x[i], y[i], w[i], h[i]);
}
return label;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
EventDemo eve = new EventDemo("事件");
eve.setVisible(true);
} }