我初始化了两个PANEL(a和b),我想一点a中的按钮,b中就增加一个按钮,可。。。做不到。 PANEL(a和b),我想一点a中的按钮,b中就增加一个按钮----------那么你必须在a中的按钮点击事件中得到面版对象b,然后用b.add(button)方法来添加 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我的确是这样做的 ,但是this.setBackground(SystemColor.info);是有效的 背景的颜色变了,但是没有增加按钮。 import javax.swing.*;import java.awt.*;import java.awt.event.*;public class TwoPanels extends JFrame { JPanel pnlA = new JPanel(); JPanel pnlB = new JPanel(); JPanel pnlC = new JPanel(); JLabel jLabel1 = new JLabel(); JButton jButton1 = new JButton(); JButton jButton2 = new JButton(); JButton jButton3 = new JButton(); public TwoPanels() { try { jbInit(); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { TwoPanels tp=new TwoPanels(); tp.setVisible(true); } private void jbInit() throws Exception { JPanel rootPanel = (JPanel)this.getContentPane(); this.setSize(400,300); jButton1.setText("Add Into A"); jButton1.addActionListener(new TwoPanels_jButton1_actionAdapter(this)); jButton2.setText("Add Into B"); jButton2.addActionListener(new TwoPanels_jButton2_actionAdapter(this)); pnlA.setPreferredSize(new Dimension(200, 10)); jButton3.setText("Add Here"); jButton3.addActionListener(new TwoPanels_jButton3_actionAdapter(this)); this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); rootPanel.add(pnlA, BorderLayout.WEST); pnlA.add(jButton3, null); rootPanel.add(pnlB, BorderLayout.CENTER); rootPanel.add(pnlC, BorderLayout.SOUTH); pnlC.add(jButton1, null); pnlC.add(jButton2, null); } void jButton1_actionPerformed(ActionEvent e) { pnlA.add(new JButton("Button"+pnlA.getComponentCount())); pnlA.validate(); } void jButton2_actionPerformed(ActionEvent e) { pnlB.add(new JButton("Button"+pnlB.getComponentCount())); pnlB.validate(); } void jButton3_actionPerformed(ActionEvent e) { pnlA.add(new JButton("Button"+pnlA.getComponentCount())); pnlA.validate(); }}class TwoPanels_jButton1_actionAdapter implements java.awt.event.ActionListener { TwoPanels adaptee; TwoPanels_jButton1_actionAdapter(TwoPanels adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jButton1_actionPerformed(e); }}class TwoPanels_jButton2_actionAdapter implements java.awt.event.ActionListener { TwoPanels adaptee; TwoPanels_jButton2_actionAdapter(TwoPanels adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jButton2_actionPerformed(e); }}class TwoPanels_jButton3_actionAdapter implements java.awt.event.ActionListener { TwoPanels adaptee; TwoPanels_jButton3_actionAdapter(TwoPanels adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jButton3_actionPerformed(e); }} 啊!!原来是validate()!!!!感谢SwordsmanF(没人性)! 同时也感谢loveyousomuch(★爱神厄洛斯★) ! java基础问题,java 方法为什么要覆写,在子类中重新写个方法不就好了吗 一些诡异的报错啊~~~~~~~~~有人知道为什么吗?好几个错误整合在一起啦! JAVA程序应用请大侠帮忙修改一下,创建按钮,然后点击按钮,显示时间 关于数组初始化的问题 关于初始化顺序的问题 请推荐一本关于PowerDesinger的中文书(可以是电子书) 高手啊 这里,repaint()应该放在哪?(很菜,耽误您几秒) 再送100分,求jtable例子! 请问Java 的SDK包括不包括JDK阿我的是v1.4 倒数问题! 很简单的问题 package和classpath小问题
背景的颜色变了,但是没有增加按钮。
import java.awt.*;
import java.awt.event.*;public class TwoPanels extends JFrame {
JPanel pnlA = new JPanel();
JPanel pnlB = new JPanel();
JPanel pnlC = new JPanel(); JLabel jLabel1 = new JLabel();
JButton jButton1 = new JButton();
JButton jButton2 = new JButton();
JButton jButton3 = new JButton();
public TwoPanels() {
try {
jbInit();
}
catch (Exception e) {
e.printStackTrace();
} } public static void main(String[] args) {
TwoPanels tp=new TwoPanels();
tp.setVisible(true);
} private void jbInit() throws Exception {
JPanel rootPanel = (JPanel)this.getContentPane();
this.setSize(400,300);
jButton1.setText("Add Into A");
jButton1.addActionListener(new TwoPanels_jButton1_actionAdapter(this));
jButton2.setText("Add Into B");
jButton2.addActionListener(new TwoPanels_jButton2_actionAdapter(this));
pnlA.setPreferredSize(new Dimension(200, 10));
jButton3.setText("Add Here");
jButton3.addActionListener(new TwoPanels_jButton3_actionAdapter(this));
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
rootPanel.add(pnlA, BorderLayout.WEST);
pnlA.add(jButton3, null);
rootPanel.add(pnlB, BorderLayout.CENTER);
rootPanel.add(pnlC, BorderLayout.SOUTH);
pnlC.add(jButton1, null);
pnlC.add(jButton2, null);
} void jButton1_actionPerformed(ActionEvent e) {
pnlA.add(new JButton("Button"+pnlA.getComponentCount()));
pnlA.validate();
} void jButton2_actionPerformed(ActionEvent e) {
pnlB.add(new JButton("Button"+pnlB.getComponentCount()));
pnlB.validate();
} void jButton3_actionPerformed(ActionEvent e) {
pnlA.add(new JButton("Button"+pnlA.getComponentCount()));
pnlA.validate();
}
}class TwoPanels_jButton1_actionAdapter
implements java.awt.event.ActionListener {
TwoPanels adaptee; TwoPanels_jButton1_actionAdapter(TwoPanels adaptee) {
this.adaptee = adaptee;
} public void actionPerformed(ActionEvent e) {
adaptee.jButton1_actionPerformed(e);
}
}class TwoPanels_jButton2_actionAdapter implements java.awt.event.ActionListener {
TwoPanels adaptee; TwoPanels_jButton2_actionAdapter(TwoPanels adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton2_actionPerformed(e);
}
}class TwoPanels_jButton3_actionAdapter implements java.awt.event.ActionListener {
TwoPanels adaptee; TwoPanels_jButton3_actionAdapter(TwoPanels adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton3_actionPerformed(e);
}
}
原来是validate()!!!!感谢SwordsmanF(没人性)! 同时也感谢loveyousomuch(★爱神厄洛斯★) !