Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 单击JButton时,如何使JPanel显示?_Java_Swing_Jpanel_Jbutton - Fatal编程技术网

Java 单击JButton时,如何使JPanel显示?

Java 单击JButton时,如何使JPanel显示?,java,swing,jpanel,jbutton,Java,Swing,Jpanel,Jbutton,我有一个ColorChooser面板,当我在程序中单击某个JButton时,如何使其显示? 编辑: 我想让它出现在一个新的框架中,这个框架可以调整大小、移动和关闭。您可以查看Java Swing教程-ColorChooserDemo2: 基本上,JColorChoose可以显示在对话框中: 对于激活此文件选择器的按钮: button.addActionListener(new ActionListener(){ public void actionPerformed(Action

我有一个ColorChooser面板,当我在程序中单击某个JButton时,如何使其显示? 编辑:
我想让它出现在一个新的框架中,这个框架可以调整大小、移动和关闭。

您可以查看Java Swing教程-ColorChooserDemo2:

基本上,JColorChoose可以显示在对话框中:

对于激活此文件选择器的按钮:

button.addActionListener(new ActionListener(){  
    public void actionPerformed(ActionEvent e) {  
    //color is whatever the user choose  
        Color color = JColorChooser.showDialog(currentComponent, "Color Chooser", Color.WHITE);  

        JButton thisBtn = (JButton)e.getSource(); //or you can just use button if that's final or global
        thisBtn.setBackground(color);
    }  
}); 

您需要为JButton编写一个ActionListener

大概是这样的:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

/**
 *
 * @author roger
 */
public class MyActListener extends JFrame implements ActionListener{

    public MyActListener(){
        super("My Action Listener");

        JButton myButton = new JButton("DisplayAnything");
        myButton.addActionListener(this);
        this.add(myButton);


        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        this.pack();
        this.setVisible(true);        
    }

    public static void main(String[] args) {
        // TODO code application logic here
        MyActListener ma = new MyActListener();
    }

    @Override
public void actionPerformed(ActionEvent e) { // YOur code for your button here
    if("DisplayAnything".equals(e.getActionCommand())){
        Color c = JColorChooser.showDialog(this, "Color Chooser", Color.BLACK);
        JButton displayAnything = (JButton)e.getSource();
        displayAnything.setBackground(c);
    }
}

请看下面的例子。请查看其中的大索引,以查看有关java的基本教程。

需要更多信息。从哪里出现?从另一个面板后面的同一个窗口?对话框中的弹出窗口?我想让它出现在一个可调整大小、可移动和可关闭的新框架中。你是如何让颜色选择器出现的?使用您自己的面板执行相同的操作。谢谢:)我如何在我的操作中实现这一点?好的,谢谢,再问一个问题,我如何使按钮显示为我选择的颜色?如果这是为JButton编写操作侦听器的正确方法,我可以从其他读者那里获得反馈吗?当按钮的数量开始增长时,是否最好为其创建一个实现ActionListener的类?或者代替
myButton.addActionListener(这个)
make
myButton.addActionListener(新的MouseListener(){…})
我个人更喜欢使用匿名内部类,如您评论中的最后一个示例,并调用实现逻辑的类。这样,就不需要定义动作命令,正如您所注意到的,当添加新按钮时,actionPerformed方法将变得相当长。你所有的例子都是有效的,当然在使用中。谢谢!还有一个问题,我怎样才能使按钮显示为我选择的颜色?@LucPeetersen正如我在编辑之前所说的,将代码放在actionPerformed方法上;你可以在里面做任何你想做的事。恐怕这不是你最初的问题。
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

/**
 *
 * @author roger
 */
public class MyActListener extends JFrame implements ActionListener{

    public MyActListener(){
        super("My Action Listener");

        JButton myButton = new JButton("DisplayAnything");
        myButton.addActionListener(this);
        this.add(myButton);


        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        this.pack();
        this.setVisible(true);        
    }

    public static void main(String[] args) {
        // TODO code application logic here
        MyActListener ma = new MyActListener();
    }

    @Override
public void actionPerformed(ActionEvent e) { // YOur code for your button here
    if("DisplayAnything".equals(e.getActionCommand())){
        Color c = JColorChooser.showDialog(this, "Color Chooser", Color.BLACK);
        JButton displayAnything = (JButton)e.getSource();
        displayAnything.setBackground(c);
    }
}