JDialogを拡張するクラスを作成しました。そこにはチェックボックスと3つのボタンがあります:受け入れ、キャンセル、すべてを選択します。クリックしたときのJButtonテキストの変更
すべて選択をクリックすると、すべてのチェックボックスがオンになり、もう一度クリックするとすべてのチェックボックスがオフになります。それはうまくいきますが、ボタンのテキストを「すべて選択」と「すべてを選択解除」の間で変更したいこともあります。そこに問題があるので、ユーザーがボタンをクリックしてテキストが「すべて選択解除」に変わると、ボタンが消えます。
私はここで最も単純な形にクラスが低下している:私が間違っているものを見ることができない
public class NodeSelectionCheckBoxJDialog extends JDialog {
public enum Options {ACEPT, CANCEL};
private Options selectedOption;
private JButton allButton;
private boolean allCheckBoxesSelected;
private JButton aceptButton;
public NodeSelectionCheckBoxJDialog(){
super(MainFrame.getInstance());
this.setTitle("Select nodes to apply");
this.setModal(true);
selectedOption = Options.CANCEL;
nodeCheckBoxesSet = new HashSet<NodeCheckBox>();
try {
initComponents();
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
}
this.pack();
this.setLocationRelativeTo(null);
this.setVisible(true);
}
private void initComponents() throws Exception {
this.getContentPane().add(createActionButtons(), BorderLayout.SOUTH);
}
private Component createActionButtons() {
JPanel buttonsPanel = new JPanel();
allCheckBoxesSelected = false;
aceptButton = new JButton("Accept");
aceptButton.setEnabled(false);
buttonsPanel.add(aceptButton);
aceptButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
selectedOption = Options.ACEPT;
dispose();
}
});
JButton cancelButton = new JButton("Cancel");
buttonsPanel.add(cancelButton);
cancelButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
selectedOption = Options.CANCEL;
dispose();
}
});
allButton = new JButton("Select all");
buttonsPanel.add(allButton);
allButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(allCheckBoxesSelected){
allCheckBoxesSelected = false;
allButton.setText("Select all");
} else {
allCheckBoxesSelected = true;
allButton.setText("Unselect all");
}
}
});
return buttonsPanel;
}
}
。どんな助け?ボタンが消えないクリックされたボタンに
のための興味深い方法をimplemeted使用ButtonModelですあなたのコードの残りの部分は?どのようにチェックボックスを選択/選択解除していますか? 'allButton'変数を別の場所で操作していますか? – Marcelo
私はチェックボックスのリスナーを持っていますが、コードを簡単にするためにそれを消去しました。選択/選択解除は正常に機能しますが、ボタンのテキストを変更しようとしても問題が表示されます。そして、いいえ、allButtonは他の場所で操作されていません –