PDA

View Full Version : button group



yegane8
چهارشنبه 21 تیر 1391, 18:07 عصر
سلام باید کجای این برنامه رز تغییر بدهم تا radioButton ها در یک buttonGroup
add شوند


import java.awt.Component;
import java.awt.Container;
import javax.swing.BoxLayout;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JRadioButton;

public class BoxLayOut {

public BoxLayOut(){

ButtonGroup buttonGroup = new ButtonGroup();

}
public static void addComponentsToPane(Container pane) {
pane.setLayout(new BoxLayout(pane, BoxLayout.Y_AXIS));
addALabel("Question",pane);
addAButton("Button 1", pane);
addAButton("Button 2", pane);
addAButton("Button 3", pane);
addAButton("Button 4", pane);


}

private static void addAButton(String text, Container container) {
JRadioButton button = new JRadioButton(text);
ButtonGroup buttonGroup = new ButtonGroup();
buttonGroup.add(button);
button.setAlignmentX(Component.RIGHT_ALIGNMENT);

container.add(button);

}

private static void createAndShowGUI() {
//Create and set up the window.
JFrame frame = new JFrame("BoxLayoutDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS E);

//Set up the content pane.
addComponentsToPane(frame.getContentPane());

//Display the window.
frame.pack();
frame.setVisible(true);
}

public static void main(String[] args) {

javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}


private static void addALabel(String text, Container container) {
JLabel label = new JLabel(text);
label.setAlignmentX(Component.RIGHT_ALIGNMENT);
container.add(label);
}
}

spiderman200700
چهارشنبه 21 تیر 1391, 20:56 عصر
سلام.
خط زیر رو به صورت سراسری تعریف کنید و از توی متد addAButton حذفش کنید.
ButtonGroup buttonGroup = new ButtonGroup();

yegane8
چهارشنبه 21 تیر 1391, 22:20 عصر
سلام.
خط زیر رو به صورت سراسری تعریف کنید و از توی متد addAButton حذفش کنید.
ButtonGroup buttonGroup = new ButtonGroup();

کاری که گفتید رو انجام دادم اما نشد فکر کنم به خاطر Static بودن متد addComponentsToPane نمیشه
اینم خروجی

run:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at BoxLayOut.addAButton(BoxLayOut.java:34)
at BoxLayOut.addComponentsToPane(BoxLayOut.java:24)
at BoxLayOut.createAndShowGUI(BoxLayOut.java:47)
at BoxLayOut.access$000(BoxLayOut.java:12)
at BoxLayOut$1.run(BoxLayOut.java:58)
at java.awt.event.InvocationEvent.dispatch(Invocation Event.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.j ava:701)
at java.awt.EventQueue.access$000(EventQueue.java:102 )
at java.awt.EventQueue$3.run(EventQueue.java:662)
at java.awt.EventQueue$3.run(EventQueue.java:660)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPri vilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java: 671)
at java.awt.EventDispatchThread.pumpOneEventForFilter s(EventDispatchThread.java:216)
at java.awt.EventDispatchThread.pumpEventsForFilter(E ventDispatchThread.java:135)
at java.awt.EventDispatchThread.pumpEventsForHierarch y(EventDispatchThread.java:123)
at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:119)
at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:111)
at java.awt.EventDispatchThread.run(EventDispatchThre ad.java:97)
BUILD SUCCESSFUL (total time: 3 seconds)

spiderman200700
پنج شنبه 22 تیر 1391, 00:04 صبح
اینجوری بنویسید:
import java.awt.Component;
import java.awt.Container;
import javax.swing.BoxLayout;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JRadioButton;
public class BoxLayOut {

ButtonGroup buttonGroup = new ButtonGroup();

public BoxLayOut() {
createAndShowGUI()
}

public void addComponentsToPane(Container pane) {
pane.setLayout(new BoxLayout(pane, BoxLayout.Y_AXIS));
addALabel("Question", pane);
addAButton("Button 1", pane);
addAButton("Button 2", pane);
addAButton("Button 3", pane);
addAButton("Button 4", pane);


}

private void addAButton(String text, Container container) {
JRadioButton button = new JRadioButton(text);
buttonGroup.add(button);
button.setAlignmentX(Component.RIGHT_ALIGNMENT);
container.add(button);

}

private void createAndShowGUI() {
//Create and set up the window.
JFrame frame = new JFrame("BoxLayoutDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS E
);

//Set up the content pane.
addComponentsToPane(frame.getContentPane());

//Display the window.
frame.pack();
frame.setVisible(true);
}

public static void main(String[] args) {

javax.swing.SwingUtilities.invokeLater(new Runnable() {

public void run() {
new BoxLayOut();
}
});
}

private void addALabel(String text, Container container) {
JLabel label = new JLabel(text);
label.setAlignmentX(Component.RIGHT_ALIGNMENT);
container.add(label);
}
}