Ссылка на объект из другого класса - PullRequest
0 голосов
/ 19 октября 2018

Я возился с TabbedPanes, и я хотел бы иметь возможность использовать метод в другом классе, чтобы установить, какая вкладка выбрана.

Однако, при попытке сделать это, я получаю две ошибки.

Во-первых, он говорит мне, что параметр 'name', который я предоставил методу во втором классе, имеет 'private access in Component'

error: name has private access in Component
                        TabbedPanes.name.setSelectedIndex(0);

Во-вторых, он говорит мне, что онне могу найти символ для метода, который я хочу вызвать из пользовательского метода второго класса.

error: cannot find symbol
                        TabbedPanes.name.setSelectedIndex(0);
                                        ^
  symbol:   method setSelectedIndex(int)
  location: variable name of type String

Мой первый класс, TabbedPanes, можно найти ниже:

import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.BoxLayout;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.Dimension;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Calendar;

public class TabbedPanes extends JFrame implements ActionListener  
{
    JTabbedPane tabs;
    JPanel pan1, pan2, pan3, pan4, pan5, pan6, pan7, pan8;
    JFrame frame;
    JScrollPane scroll1, scroll2, scroll3, scroll4, scroll5, scroll6, scroll7, scroll8;

    public void Tabs()
    {   
        tabs = new JTabbedPane();

        frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        pan1 = new JPanel(new FlowLayout(FlowLayout.LEFT));                                    
            JScrollPane scroll1 = new JScrollPane(pan1);                                           
                scroll1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
                scroll1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);

        pan2 = new JPanel();

        pan3 = new JPanel();

        pan4 = new JPanel();

        pan5 = new JPanel();

        pan6 = new JPanel();

        pan7 = new JPanel();

        pan8 = new JPanel();
            JScrollPane scroll8 = new JScrollPane(pan8);                                            
                scroll8.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
                scroll8.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);

        Container pane = frame.getContentPane();
        pane.add(tabs);
            tabs.add("Mon", scroll1);
            tabs.add("Tue", pan2);
            tabs.add("Wed", pan3);
            tabs.add("Thu", pan4);
            tabs.add("Fri", pan5);
            tabs.add("Sat", pan6);
            tabs.add("Sun", pan7);
            tabs.add("Notes", scroll8);

            Dates datesObject = new Dates();
            datesObject.tabOnStartup("tabs");                                       

        frame.setSize(400,400);
        frame.setVisible(true);
    }

    public static void main(String[] args)
    {
        TabbedPanes TrueTabs = new TabbedPanes();
        TrueTabs.Tabs();    
    }   
}

Второй класс, Даты, можно найти ниже:

import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.BoxLayout;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.Dimension;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Calendar;

public class Dates
{
    public void tabOnStartup(String name)
    {
            TabbedPanes.name.setSelectedIndex(0);
    }

ЛюбойПомощь будет принята с благодарностью, и я надеюсь, что мой код достаточно чистый, чтобы хорошо читать.

1 Ответ

0 голосов
/ 19 октября 2018

Если я вас правильно понял, вы должны изменить переменные вкладки JTabbedPane в классе TabbedPanes на статические: static JTabbedPane tabs;

Также в классе Dates вы должны использовать

TabbedPanes.tabs.setSelectedIndex(0);

вместоиз

TabbedPanes.name.setSelectedIndex(0);

Похоже, что вы не реализовали метод в классе TabbedPanes:

@Override
public void actionPerformed(ActionEvent arg0) {
    // TODO Auto-generated method stub

} 

Если вы используете IDE, например Eclipse, NetBeans и т. д., вы должны были получитьсообщение об ошибке типа

- The type TabbedPanes must implement the inherited abstract method 
 ActionListener.actionPerformed(ActionEvent)

После этих изменений результат будет:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...