我正在创建一个程序界面,用户在菜单中选择一些东西,然后它会显示几个标签。在一些标签内有选择。当用户从菜单中选择某些内容,该选项卡变为可见,以及用户再次单击菜单时,问题就出现了,这就是正在发生的事情: menu bugged
现在代码很简陋,所以我会坚持创建组件。
创建菜单项:
JMenu menuArquivo = new JMenu("Arquivo");
menuBar.add(menuArquivo);
JMenuItem arqAC = new JMenuItem("Aviso de Cobran\u00E7a");
menuArquivo.add(arqAC);
arqAC.addActionListener(menuItemListener);
arqAC.setActionCommand("AC");
将tabPane添加到contentPane:
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
tabs = new ArquivoTabs();
JTabbedPane tabbedPane = tabs.getTabs();
tabbedPane.setBounds(0, 0, 1061, 600);
tabbedPane.setSelectedIndex(index);
contentPane.add(tabbedPane);
tabbedPane.setTitleAt(index, title);
revalidate();
的contentPane:
public ArquivoTabs() {
tabbedPane = new JTabbedPane(JTabbedPane.TOP);
add(tabbedPane);
ACTab act = new ACTab(tabbedPane);
tabbedPane.addTab("AC", null, act, "Aviso de Cobran\u00E7a");
}
创建一个标签:
public ACTab(JTabbedPane tp) {
tabbedPane = tp;
aut = Authority.getAuthority();
ButtonListener buttonListener = new ButtonListener();
setLayout(null);
tfAC = new JTextField();
tfAC.setBounds(10, 25, 251, 20);
add(tfAC);
tfAC.setColumns(10);
bpAC = new JButton("Procurar");
bpAC.setBounds(271, 24, 75, 23);
add(bpAC);
bpAC.addActionListener(buttonListener);
bpAC.setActionCommand("bpAC");
JSeparator separator = new JSeparator(JSeparator.HORIZONTAL);
separator.setBounds(10, 68, 336, 9);
add(separator,
BorderLayout.LINE_START);
btnGerarAC = new JButton("GERAR");
btnGerarAC.setBounds(271, 346, 75, 23);
add(btnGerarAC);
btnGerarAC.addActionListener(buttonListener);
btnGerarAC.setActionCommand("btnGerarAC");
JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(10, 113, 336, 106);
add(scrollPane);
tfDescDeb = new JTextArea();
scrollPane.setViewportView(tfDescDeb);
tfDescDeb.setFont(new Font("Arial", Font.PLAIN, 14));
tfDescDeb.setColumns(10);
tfDescDeb.setLineWrap(true);
tfDescDeb.setWrapStyleWord(true);
tfDescDeb.setEditable(false);
motTypes = DescDeb.getMotTypes();
choice = new Choice();
choice.setBounds(10, 87, 336, 20);
add(choice);
choice.add("");
for(DescDeb mt : motTypes){
choice.add(mt.getTitle());
}
choice.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent ie)
{
for(DescDeb mt : motTypes){
if(choice.getSelectedItem().equals(mt.getTitle())){
tfDescDeb.setEditable(false);
tfDescDeb.setText(mt.getText());
}
}
}
});
JLabel lblDescDeb = new JLabel("Descri\u00E7\u00E3o dos d\u00E9bitos:");
lblDescDeb.setBounds(10, 73, 110, 14);
add(lblDescDeb);
JLabel lblAutRole = new JLabel("Cargo da Autoridade:");
lblAutRole.setBounds(10, 258, 110, 14);
add(lblAutRole);
txtAutRole = new JTextField();
txtAutRole.setEditable(false);
txtAutRole.setColumns(10);
txtAutRole.setBounds(134, 258, 212, 20);
txtAutRole.setText(aut.getRole());
add(txtAutRole);
JLabel lblAutMat = new JLabel("Matr\u00EDcula da Autoridade:");
lblAutMat.setBounds(10, 286, 118, 14);
add(lblAutMat);
txtAutMat = new JTextField();
txtAutMat.setEditable(false);
txtAutMat.setColumns(10);
txtAutMat.setBounds(134, 286, 212, 20);
txtAutMat.setText(aut.getRegistration());
add(txtAutMat);
JLabel lblAutName = new JLabel("Nome da Autoridade:");
lblAutName.setBounds(10, 230, 102, 14);
add(lblAutName);
txtAutName = new JTextField();
txtAutName.setEditable(false);
txtAutName.setBounds(134, 230, 212, 20);
txtAutName.setText(aut.getName());
add(txtAutName);
JButton btnEditarAutoridade = new JButton("Editar Autoridade");
btnEditarAutoridade.setBounds(226, 317, 119, 23);
btnEditarAutoridade.addActionListener(buttonListener);
btnEditarAutoridade.setActionCommand("edtAut");
add(btnEditarAutoridade);
JLabel lblArquivoDeEntrada = new JLabel("Arquivo de Entrada:");
lblArquivoDeEntrada.setBounds(10, 11, 110, 14);
add(lblArquivoDeEntrada);
}
我必须通过JTabbedPane tp将其与不相关的东西一起使用。
如果需要更多部分代码,请与我们联系。
答案 0 :(得分:2)
您正在将Swing组件(JMenu
,JTabbedPane
)与AWT组件(Choice
)混合使用。这会导致各种问题,包括Choice
组件与JMenu
的重叠。
使用JComboBox
代替Choice