【问题标题】:I'm trying to get a class to be called from a button in an action listener我正在尝试从动作侦听器中的按钮调用一个类
【发布时间】:2023-03-21 03:00:01
【问题描述】:

我得到错误 -

类出席类 1 中的构造者出席类 1 不能 适用于给定类型;必需的 java.lang.String,java.lang.String 成立;没有参数,实际参数列表和形式参数列表不同 长度。

我试图从中调用类的按钮 -

JButton Class1 = new JButton();



     Class1.setPreferredSize(new Dimension(125,55));
        panel.setLayout(null);
        Class1.setOpaque(true);
        Class1.setContentAreaFilled(true);
        Class1.setBorderPainted(false);
        Class1.setBounds(24, 175, 125, 55);
        panel.add(Class1);
        Class1.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e){
                    attendanceClass1 ac1 = new attendanceClass1();
                    frame.dispose();
                }
            }
        );

我试图调用的类 -

    import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel; 
import org.jfree.chart.JFreeChart; 
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset; 
import org.jfree.data.category.DefaultCategoryDataset; 
import org.jfree.ui.ApplicationFrame; 
import org.jfree.ui.RefineryUtilities; 

public class attendanceClass1 extends ApplicationFrame {

    public attendanceClass1( String applicationTitle , String chartTitle ) {
        super( applicationTitle );        
        JFreeChart barChart = ChartFactory.createBarChart(
                chartTitle,           
                "Name",            
                "% Attendance",            
                createDataset(),          
                PlotOrientation.VERTICAL,           
                true, true, false);

        ChartPanel chartPanel = new ChartPanel( barChart );        
        chartPanel.setPreferredSize(new java.awt.Dimension( 560 , 367 ) );        
        setContentPane( chartPanel ); 
    }

    private CategoryDataset createDataset( ) {
        final String kyle = "KYLE";        
        final String euan = "EUAN";        
        final String sam = "SAM";        
        final String K = "Kyle's";        
        final String E = "Euan's";        
        final String S = "Sam's";        
        final String safety = "safety";        
        final DefaultCategoryDataset dataset = 
            new DefaultCategoryDataset( );  

        dataset.addValue( 9.30 , kyle, K);   

        dataset.addValue(8.40, euan, E);

        dataset.addValue(8.90, sam, S);


        return dataset; 
    }

    public static void main( String[ ] args ) {
        attendanceClass1 chart = new attendanceClass1("Attendance - Class 1", 
                "Aiming to achieve 100%!");
        chart.pack( );        
        RefineryUtilities.centerFrameOnScreen( chart );        
        chart.setVisible( true ); 
    }
}

【问题讨论】:

  • 注意 Java 命名约定。类名以大写字母开头,属性名以小写字母开头
  • 请展示类attendanceClass1 的实现
  • 还没有真正解决我的问题,你对实际问题有什么建议吗?]#
  • attendanceClass1 - 添加
  • 您正在尝试调用new attendanceClass1();,但您的类没有没有参数的构造函数。

标签: java class constructor jframe


【解决方案1】:

这里需要添加两个参数:

 attendanceClass1 ac1 = new attendanceClass1("String1", "String2");

或者你必须为你的类添加一个不带参数的构造函数

public attendanceClass1( ) {
  ...
}

注意 Java 命名约定。类名以大写字母开头,属性名以小写字母开头

【讨论】:

  • 类仍然没有打开,它运行但应用程序窗口没有打开和显示。
  • 在 ac1 对象中实例化 attendanceClass1 类调用 setVisible 方法后使窗口可见,并像这样将 true 传递给它 ac1.setVisible(true);
【解决方案2】:

正如错误消息所说

类出席类 1 中的构造函数出席类 1 不能 适用于给定类型;需要 java.lang.String,java.lang.String 成立;没有参数,实际参数列表和形式参数列表不同 长度。

您的课程attendanceClass1 需要在您调用它时提供两个字符串。 所以你的错误是,当你从 addActionListener 调用它时,你没有将任何东西传递给类的构造函数

 attendanceClass1 ac1 = new attendanceClass1();

尝试像这样传递两个字符串

 attendanceClass1 ac1 = new attendanceClass1("string","string");

【讨论】:

    猜你喜欢
    • 2019-08-17
    • 1970-01-01
    • 2011-08-21
    • 1970-01-01
    • 2015-07-24
    • 2013-03-30
    • 1970-01-01
    • 2012-01-21
    • 2020-07-04
    相关资源
    最近更新 更多