나는 내 응용 프로그램의 인터페이스를 만드는 데 사용하는 TabBuilder
이라는 클래스가 있지만 기묘한 문제를 겪고 있습니다. 아래 코드를 실행하려고하면 mainScreen이 그려지지만 BarMenu에서 SearchScreen을 요청하면 나타나지 않습니다. public static void main (String[] args)
MainString 내에서 SearchScreen 만 실행하려고하면 (빌더 호출) 너무 많이 표시되지는 않습니다. 하지만 요청 이벤트와 팁 TabBuilder tb = new TabBuilder(); tb.requestTab();
으로 가면 화면이 정상적으로 표시됩니다. 그래서, 무엇이 잘못 되었을까요? 미리 감사는JFrame이 보이지 않는다
MainScreen :
는public class MainScreen{
public MainScreen()
{
TabBuilder tb = new TabBuilder();
tb.mainTab();
}
}
SearchScreen :
는public class SearchScreen{
public void SearchScreen(){
TabBuilder tb = new TabBuilder();
tb.requestTab();
}
}
TabBuilder :
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class TabBuilder implements ActionListener {
JTabbedPane tabbedPane = new JTabbedPane();
JMenuItem close, request;
protected JTextField txtrequest = new JTextField();
JButton btrequest = new JButton();
protected JFrame requestFrame = new JFrame();
public void TabBuilder(){
}
public void mainTab(){
JMenuBar bar;
JMenu file, register;
JFrame mainFrame = new JFrame();
bar= new JMenuBar();
file= new JMenu("File");
register= new JMenu("Request");
close= new JMenuItem("Close");
close.addActionListener(this);
request= new JMenuItem("Request Query");
request.addActionListener(this);
bar.add(file);
bar.add(register);
file.add(close);
register.add(request);
mainFrame.setExtendedState(mainFrame.getExtendedState() | mainFrame.MAXIMIZED_BOTH); // Maximized Window or setSize(getMaximumSize());
mainFrame.setTitle("SHST");
mainFrame.setJMenuBar(bar);
mainFrame.setDefaultCloseOperation(0);
mainFrame.setVisible(true);
WindowListener J=new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
};
mainFrame.addWindowListener(J);
}
public void requestTab(){
JLabel lbrequest;
JPanel requestPane;
btrequest= new JButton("request");
lbrequest= new JLabel("Type Keywords in english to be requested below:");
txtrequest= new JTextField();
requestPane=new JPanel();
requestPane.setBackground(Color.gray);
requestPane.add(lbrequest);
requestPane.add(txtrequest);
requestPane.add(btrequest);
requestPane.setLayout(new GridLayout(3,3));
btrequest.setEnabled(true);
requestFrame.add(requestPane);
requestFrame.setTitle("SHST");
requestFrame.setSize(400, 400);
requestFrame.setVisible(true);
requestFrame.setDefaultCloseOperation(1);
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==close){
System.exit(0);
}
if(e.getSource()==request){
TabBuilder tb = new TabBuilder();
tb.requestTab();
}
}
public static void main (String[] args){
MainScreen m = new MainScreen();
}
}
실행 환경이 무엇입니까? 당신의 본보기가 나를 위해 일합니다. –
@ViktorSeifert 문제가 무엇인지 이미 확인했습니다. 답변을 확인하고 지원해 주셔서 대단히 감사합니다. –
답변을 수락하는 것을 잊지 마십시오. –