첫 번째 JPanel에 설정된 값을 반환하고 RYSUJ 버튼을 클릭하여 두 번째 JPanel을 다시 칠하고 싶습니다.다른 패널의 값으로 JPanel을 새로 고침
내 주요 클래스 :
public static void main(String[] args) throws IOException {
FractalFrame gui = new FractalFrame();
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gui.setVisible(true);
}
프레임 :
public class FractalFrame extends JFrame {
public FractalFrame() {
setTitle("Fractalz beta");
setSize(800, 600);
setResizable(false);
FractalzGUI gui = new FractalzGUI();
FractalJPanel panel = new FractalJPanel(gui.kol, gui.zoom, gui.radio);
this.add(panel);
this.add(gui, BorderLayout.EAST);
}
}
GUI를 클래스 (그것의 첫번째 JPanel의) :
public class FractalzGUI extends JPanel implements ActionListener {
private JRadioButton mandelbrotRadio = new JRadioButton("Zbiór Mandelbrota");
private JRadioButton shipRadio = new JRadioButton("Płonący statek");
private JLabel ustawZoom = new JLabel("zoom: ");
private JTextField zoomtf = new JTextField("", 5);
private JLabel wyborKoloru = new JLabel("Wybierz kolor: ");
private String[] kolory = {"zolty", "niebieski", "czerwony", "zielony", "brazowy", "fioletowy"};
private JComboBox listaKolorow = new JComboBox(kolory);
private JButton rysuj = new JButton("Rysuj!");
public int radio=0; //1 = mandelbrot, 2 = ship
public int zoom=0;
public int kol=0;
public FractalzGUI() {
this.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.insets = new Insets(0, 0, 0, 0);
gbc.gridx = 0;
gbc.gridy = 0;
this.add(mandelbrotRadio, gbc);
gbc.gridy = 1;
this.add(shipRadio, gbc);
gbc.gridx = 0;
gbc.gridy = 2;
this.add(ustawZoom, gbc);
gbc.gridx = 1;
this.add(zoomtf, gbc);
gbc.gridx = 0;
gbc.gridy = 3;
this.add(wyborKoloru, gbc);
gbc.gridx = 1;
this.add(listaKolorow, gbc);
gbc.gridx = 0;
gbc.gridy = 4;
this.add(rysuj, gbc);
mandelbrotRadio.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
shipRadio.setSelected(false);
}
});
shipRadio.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
mandelbrotRadio.setSelected(false);
}
});
rysuj.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (mandelbrotRadio.isSelected()) {
radio = 1;
} else if (shipRadio.isSelected()) {
radio = 2;
}
if(zoomtf.getText().equals("")) zoom=0;
else zoom=Integer.parseInt(zoomtf.getText());
switch(listaKolorow.getSelectedIndex()){
case 0:
kol = 40;
break;
case 1:
kol = 165;
break;
case 2:
kol = 256;
break;
case 3:
kol = 105;
break;
case 4:
kol = 20;
break;
case 5:
kol = 200;
break;
}
}
});
}
@Override
public void actionPerformed(ActionEvent e) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}
두 번째 패널이 표시되지 않고 어디서 붙어 있습니까? 당신의 문제를 어디에서 해결하려고합니까? –
프레임에서 두 번째 JPanel (이름이 지정된 패널)을 초기화하는 것을 볼 수 있습니다. 두 번째 패널의 코드를 보낼 필요가 없습니다. init에 관한 것입니다. 나는 3 개의 변수를 반환하고 싶다. 즉, 콜, 줌, 라디오를 GUI에서 불러오고 두 번째 패널을 새 값으로 새로 고침 – Wyrzeu
내 대답이 맞습니까? 그것에 대해 질문이 있으십니까? –