두 가지 클래스가 있습니다. 하나는 CreateDefault이고, 이는 내 프로그램에 대한 GUI 설정을 만듭니다. 다른 클래스는 tabPanePopup입니다.이 클래스는 CreateDefault와 관련된 JTabbedPane에 대한 팝업 및 명령을 만듭니다.정수가 수정되어 반환되지만 getter 함수는 수정하지 않습니다. 어떤 아이디어?
public int getCount() { return this.count; }
위의 코드는 count를 반환합니다. 카운트, 생성 된 새 문서 수를 계산합니다. getCount()는 CreateDefault 클래스의 일부입니다.
아래 코드는 tabPanePopup의 일부입니다. newTab이 수행하는 작업은 이미 작성되었습니다. CreateDefault에서는 원래 count = 1이고 GUI가 완전히 생성되면 total = 2가됩니다. tabPanePopup 클래스에서 getCount()가 호출되면 getCount()는 2를 반환하지만 1을 반환합니다. CreateDefault 클래스의 count에 println 함수를 사용하면 2가 인쇄되지만 tabPanePopup에는 1이 인쇄됩니다. 이 일을하는 데 어떤 이유가 있습니까? GUI가 생성 될 때 count ++를 모두 수정하지 않고 GUI가 생성 될 때까지 getCount() 함수를 호출 할 수 없습니다.
newTab.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent action) {
CreateDefault get = new CreateDefault();
int count = get.getCount();
String parsed = Integer.toString(count);
Font myFont = new Font("Calibri", Font.BOLD, 12);
JEditorPane editorPane = new JEditorPane();
JScrollPane scrollPane = new JScrollPane(editorPane,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
LineCounter counter = new LineCounter(editorPane);
UndoManager manager = new UndoManager();
Document document = editorPane.getDocument();
document.addUndoableEditListener(manager);
scrollPane.setRowHeaderView(counter);
counter.setBackground(Color.white);
tabPane.setFont(myFont);
tabPane.addTab("New Document " + parsed, scrollPane);
tabPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
get.setCount(count++);
}
});
고맙습니다. 그러나 이렇게하면 정적 변수가 만들어지며,이를 불필요하게 사용하는 경향이 있습니다. 나는 그들을 피하려고 노력하고있다. 정적이 아닌 방식으로 getCount()에 액세스하는 데 사용할 수있는 다른 방법이 있습니까? – Frizinator
@StevenTylerFrizell : 아니요, 정적 변수를 사용한다고 말한 적이 없으며 실제로 이것을하지 않기를 강력히 촉구합니다. 인스턴스 필드를 만들고 사용하십시오. 참조를 전달할 수 있도록이 코드가있는 클래스에'setCreateDefault (CreateDefault createDefault) '메소드를 제공해야 할 수도 있습니다. –
자, setCreateDefault (CreateDefualt createDefualt)가 tabPanePopup 클래스에 있어야합니까? 그렇다면, 그 일을하고 CreateDefault 클래스에서 setCreateDefault 함수를 호출하고 tabPanePopup에 CreateDefault의 현재 인스턴스를 보냈습니다. 나는 제대로 따라갈거야? – Frizinator