Jak przekazać do pola?

0

class Main(){
public boolean aktiv;
public void zbudujPrzelacznik(String nazwa, boolean zaznaczenie, final boolean aktywnosc){
JRadioButton przelacznik = new JRadioButton(nazwa, zaznaczenie);

    przelacznik.addActionListener(new ActionListener() {
        private boolean akty;
        public void actionPerformed(ActionEvent e){
            System.out.println(aktywnosc);
            this.aktiv=aktywnosc; **WARRNIG!**
        }
    });
    
    groupOne.add(przelacznik);
    panel2.add(przelacznik);
}

}
Nie wiem jak przekazać do pola aktiv wartośc logiczną aktywność?

0

Stwórz niestatyczną klasę wewnętrzną implementującą ActionListener.

0

Dzięki za szybką odp!

Napisałem taki kod:

import javax.swing.*; 
import java.awt.*;
import java.awt.event.*;

public class Main3 extends JFrame{ 
    public boolean aktiv;
    public Main3(){
        super("Zdarzenia");
        this.setBounds(300, 300, 300, 200);
        initComponents();
        this.setDefaultCloseOperation(3);
    }  
    public void initComponents(){
        Obszar_tekstowy.add(tekst);
        zbudujPrzelacznik("Aktywne", true, true);
        zbudujPrzelacznik("Nieaktywne",false,false);
        budujButton("Czerwony", Color.RED, "CZERWONY");
        budujButton("Czarny", Color.BLACK, "CZARNY");
        budujButton("Niebieski", Color.BLUE, "NIEBIESKI");
        budujButton("Zielony", Color.GREEN, "ZIELONY"); 
        this.getContentPane().add(panel);
        this.getContentPane().add(panel2,BorderLayout.PAGE_END);
        this.getContentPane().add(Obszar_tekstowy, BorderLayout.EAST);
        pack();
    } 
    JPanel Obszar_tekstowy = new JPanel();
    JPanel panel = new JPanel();
    JPanel panel2 = new JPanel();
    JTextField tekst = new JTextField(10);
    ButtonGroup groupOne = new ButtonGroup();
    public void budujButton(String nazwa, final Color k, final String kolorek){
        JButton przycisk = new JButton(nazwa);
        System.out.println(aktiv);
        if(aktiv==true){
        System.out.println(aktiv);
        przycisk.addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent e) {
               tekst.setText(kolorek);
               Obszar_tekstowy.add(tekst);
               panel.setBackground(k);
            }
        });}
        else{}
        panel.add(przycisk);
    } 

    public void zbudujPrzelacznik(String nazwa, boolean zaznaczenie, final boolean aktywnosc){
        JRadioButton przelacznik = new JRadioButton(nazwa, zaznaczenie);
        
        przelacznik.addActionListener(new ActionListener() {
            private boolean akty;
            public void actionPerformed(ActionEvent e){
                aktiv=aktywnosc; 
            }
        });
        
        groupOne.add(przelacznik);
        panel2.add(przelacznik);
    }

     public static void main(String[] args) {
        java.awt.EventQueue.invokeLater(new Runnable(){
         @Override
         public void run(){
         new Main3().setVisible(true);
       }
     });
    } 
    String kolorek;
}

Problem jest taki, że jak wcisne radioButton aktywny to mają być przyciski aktywne, natomiast kiedy jest RadioButton nieaktywny to przyciski są nieaktywne, ale coś mam źle, dlatego bardzo proszę o pomoc, bo już nie wiem co zrobić, żeby działało...

0

Przyciski mają zgadnąć Twoje intencje? Musisz wywołać metodę setEnabled(...).

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class Main3 extends JFrame{
    public boolean aktiv=true;
    private ArrayList<JButton> buttons;
    public Main3(){
        super("Zdarzenia");
        this.setBounds(300, 300, 300, 200);
        initComponents();
        this.setDefaultCloseOperation(3);
    }
    public void initComponents(){
        Obszar_tekstowy.add(tekst);
        zbudujPrzelacznik("Aktywne", true, true);
        zbudujPrzelacznik("Nieaktywne",false,false);
        buttons=new ArrayList<JButton>();
        budujButton("Czerwony", Color.RED, "CZERWONY");
        budujButton("Czarny", Color.BLACK, "CZARNY");
        budujButton("Niebieski", Color.BLUE, "NIEBIESKI");
        budujButton("Zielony", Color.GREEN, "ZIELONY");
        this.getContentPane().add(panel);
        this.getContentPane().add(panel2,BorderLayout.PAGE_END);
        this.getContentPane().add(Obszar_tekstowy, BorderLayout.EAST);
        setButtons();
        pack();
    }
    JPanel Obszar_tekstowy = new JPanel();
    JPanel panel = new JPanel();
    JPanel panel2 = new JPanel();
    JTextField tekst = new JTextField(10);
    ButtonGroup groupOne = new ButtonGroup();
    public void budujButton(String nazwa, final Color k, final String kolorek){
        JButton przycisk = new JButton(nazwa);
        buttons.add(przycisk);
        przycisk.addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent e) {
               tekst.setText(kolorek);
               Obszar_tekstowy.add(tekst);
               panel.setBackground(k);

            }
        });
        panel.add(przycisk);
    }

    public void zbudujPrzelacznik(String nazwa, boolean zaznaczenie, final boolean aktywnosc){
        JRadioButton przelacznik = new JRadioButton(nazwa, zaznaczenie);

        przelacznik.addActionListener(new ActionListener() {
            private boolean akty;
            public void actionPerformed(ActionEvent e){
               aktiv=!aktiv;
               setButtons();
            }
        });

        groupOne.add(przelacznik);
        panel2.add(przelacznik);
    }
    private void setButtons()
    {
        for(int i=0;i<buttons.size();i++)
        {
            buttons.get(i).setEnabled(aktiv);
        }
    }

     public static void main(String[] args) {
        java.awt.EventQueue.invokeLater(new Runnable(){
         @Override
         public void run(){
         new Main3().setVisible(true);
       }
     });
    }
    String kolorek;
}
0

DZIĘKI SERDECZNE!

1 użytkowników online, w tym zalogowanych: 0, gości: 1