나는 라디오 버튼과 라디오 버튼에 바인딩 된 여러 라벨이있는 패널을 포함하는 동적으로 추가 된 패널들을 가지고있다. 선택한 라디오 버튼에 레이블이 바인딩 된 컨테이너를 가져 오거나 다른 단어 - 데이터가 선택한 라디오 버튼에 바인딩되도록 단추를 가져야한다고 가정합니다. 그러나이 컨테이너를 얻는 방법? 여기 스윙 : 컨테이너를 JRadioButton에 바인딩하는 방법?
내가이 일을하려고 내 코드입니다 (사실이 UI (보기) 측에 무슨 일이 일어나고 있는지 보여줄 수있는 그루터기이다) : 작업중인 같은public class Test extends JFrame {
public static ButtonGroup radioButtons = new ButtonGroup();
public Test() {
super("Test");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setSize(200, 300);
final JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
JButton addButton = new JButton("Add");
addButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
panel.add(new PanelWithRadioButton("text1", "text2"));
panel.revalidate();
}
});
panel.add(addButton);
JButton infoButton = new JButton("Info");
infoButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
for(Enumeration<AbstractButton> myRadioButtons = radioButtons.getElements();
myRadioButtons.hasMoreElements();) {
JRadioButton btn = (JRadioButton) myRadioButtons.nextElement();
if(btn.isSelected()) {
PanelWithTwoLabels panelWithLabels = (PanelWithTwoLabels) btn.getComponent(1); //Trying to get Component bind to selected JRadioButton
JOptionPane.showMessageDialog(null, "Text1: " + panelWithLabels.getLabel1Text() + ", Text2: " + panelWithLabels.getLabel2Text());
}
}
}
});
panel.add(infoButton);
getContentPane().add(panel);
setVisible(true);
}
public static void main(String[] args) {
new Test();
}
//JRadioButton + Panel with two text fields
private class PanelWithRadioButton extends JPanel {
private JRadioButton rButton;
private PanelWithTwoLabels panelWithTwoLabels;
public PanelWithRadioButton(String text1, String text2) {
setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
panelWithTwoLabels = new PanelWithTwoLabels(text1, text2);
rButton = new JRadioButton();
rButton.add(panelWithTwoLabels); //Bind Component to JRadioButton
radioButtons.add(rButton);
add(rButton);
add(panelWithTwoLabels);
}
}
private class PanelWithTwoLabels extends JPanel {
private JLabel label1;
private JLabel label2;
public PanelWithTwoLabels(String text1, String text2) {
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
label1 = new JLabel(text1);
label2 = new JLabel(text2);
add(label1);
add(label2);
}
private String getLabel1Text() {
return label1.getText();
}
private String getLabel2Text() {
return label2.getText();
}
}
}
나는 살펴 보겠습니다. – trashgod
필자는 내 질문에 대해 다시 말하기로 결정했습니다. 예제에 설명 된 내용은 작동 방식의 예입니다 (스텁이라고 부름). 모델에서 가져온 데이터는 두 개의 레이블 (모델의 데이터로 채워짐)이있는 라디오 버튼과 패널로 뷰에 배치됩니다. 그리고 정확히 이해하고 싶은 것은 버튼 그룹에서 특정 라디오 버튼을 선택할 때이 라벨에서 데이터를 가져 오는 방법입니다. 단추 그룹 모델을 통해 선택된 라디오 단추를 얻을 수 있지만 선택한 라디오 단추에 구성 요소 바인딩을 얻는 방법. 희망이 지금은 더 자세한 소리 :) – Dragon
나는 위의 접근 방식을 설명했습니다. – trashgod