我有问题。我有2个类(MainFrame和MainContacts)我想获得在MainContacts类中声明的面板,并在单击菜单中的操作时显示它。
当我现在点击时,没有任何事情发生,就像点击之前一样。我不知道问题出在哪里
我的代码:
public class MainFrame {
JFrame mainFrame = new JFrame("Team Helper");
JPanel mainPanel = new JPanel();
JMenuBar mainMenuBar = new JMenuBar();
JMenu file = new JMenu("Plik");
JMenuItem close = new JMenuItem("Zakoncz");
JMenu tools = new JMenu("Narzedzia");
JMenuItem contacts = new JMenuItem("Kontakty");
JMenu help = new JMenu("Pomoc");
JMenuItem information = new JMenuItem("O programie");
public void runContactForm()
{
new MainContacts();
}
public MainFrame(){
mainFrame.setJMenuBar(mainMenuBar);
mainMenuBar.add(file);
file.add(close);
close.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
mainFrame.dispose();
}
});
mainMenuBar.add(tools);
tools.add(contacts);
contacts.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
runContactForm();
}
});
mainMenuBar.add(help);
help.add(information);
mainFrame.add(mainPanel);
mainFrame.setVisible(true);
mainFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
mainFrame.setSize(1600, 800);
mainFrame.setResizable(false);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new MainFrame();
}
});
}
}
第二课:
public class MainContacts extends MainFrame {
JPanel leftPanel = new JPanel();
JPanel rightPanel = new JPanel();
JButton show = new JButton("Pokaż");
JButton addContact = new JButton("Dodaj kontakt");
public MainContacts() {
leftPanel.add(show);
leftPanel.add(addContact);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new MainContacts();
}
});
}
}
答案 0 :(得分:0)
在您的按钮处理程序中,调用MainContacts.main
而不是直接实例化
contacts.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
MainContacts.main(new String[] {});
}
});
答案 1 :(得分:0)
我找到了调用JPanel的解决方案。 我将mainPanel更改为“protected”并立即写入我看到“MainFrame”中的元素。我添加到mainPanel leftPanel及其作品。
第一项任务,完成。
下一个问题,当我调用constoructor时。它不在同一帧中工作,是添加了leftPanel打开新帧。
以下代码:
public class MainFrame {
JFrame mainFrame = new JFrame("Team Helper");
protected JPanel mainPanel = new JPanel();
JMenuBar mainMenuBar = new JMenuBar();
JMenu file = new JMenu("Plik");
JMenuItem close = new JMenuItem("Zakoncz");
JMenu tools = new JMenu("Narzedzia");
JMenuItem contacts = new JMenuItem("Kontakty");
JMenu help = new JMenu("Pomoc");
JMenuItem information = new JMenuItem("O programie");
public void runMainContact()
{
new MainContacts();
}
public MainFrame(){
mainFrame.setJMenuBar(mainMenuBar);
mainMenuBar.add(file);
file.add(close);
close.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
mainFrame.dispose();
}
});
mainMenuBar.add(tools);
tools.add(contacts);
contacts.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
runMainContact();
}
});
mainMenuBar.add(help);
help.add(information);
mainFrame.add(mainPanel);
mainFrame.setVisible(true);
mainFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
mainFrame.setSize(1600, 800);
mainFrame.setResizable(false);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new MainFrame();
}
});
}
}
第二课:
public class MainContacts extends MainFrame {
protected JPanel leftPanel = new JPanel();
JPanel rightPanel = new JPanel();
JButton show = new JButton("Pokaż");
JButton addContact = new JButton("Dodaj kontakt");
public MainContacts() {
mainPanel.add(leftPanel);
leftPanel.add(show);
leftPanel.add(addContact);
}
}