我试图在程序的main方法中创建getter函数后从另一个类中访问它。我试过从其他地方访问该函数,但IntelliJ仍然给出了同样的错误:cannot resolve method "getCurrentDeviceInfo()"
相关代码如下:
主要方法(currentMidiDeviceInfo是一个公共变量)
public static void main(String[] args)
{
optionsGUI = new optionsGUI();
currentMidiDeviceInfo = optionsGUI.getCurrentDeviceInfo();
}
OptionsGUI Class
import javax.sound.midi.MidiDevice;
import javax.sound.midi.MidiSystem;
import javax.swing.*;
import java.awt.*;
public class optionsGUI extends JFrame{
public MidiDevice.Info currentDeviceInfo;
public MidiDevice.Info getCurrentDeviceInfo() {
return currentDeviceInfo;
}
public optionsGUI() {
//Setup JFrame
setLayout(new FlowLayout());
setSize(new Dimension(250, 140));
//Get MIDI Device Info
MidiDevice.Info[] midiDeviceInfo = MidiSystem.getMidiDeviceInfo();
currentDeviceInfo = midiDeviceInfo[0];
//Setup Midi Device Selection Label
JLabel midiDeviceBoxLabel = new JLabel("Select an MIDI Device");
add(midiDeviceBoxLabel);
//Setup Midi Device Selection
JComboBox midiDeviceBox = new JComboBox(midiDeviceInfo);
add(midiDeviceBox);
//Setup OK and Cancel Buttons
JButton okButton = new JButton("OK");
okButton.addActionListener(e ->
{
currentDeviceInfo = (MidiDevice.Info) midiDeviceBox.getSelectedItem();
setVisible(false);
});
JButton cancelButton = new JButton("Cancel");
cancelButton.addActionListener(e -> this.setVisible(false));
//Setup Button Panel
JPanel buttonPanel = new JPanel();
buttonPanel.add(okButton);
buttonPanel.add(cancelButton);
add(buttonPanel);
}
}
答案 0 :(得分:0)
也许您需要将getCurrentDeviceInfo()方法设为静态?或者可能将代码移到main方法之外?
答案 1 :(得分:0)
optionsGUI被声明为JFrame,我现在已经更改了它,并且它可以正常工作,感谢您的帮助!