Dodaję pola wyboru na JPanel
w FlowLayout
pola wyboru są dodawane poziomo.dodać kontrolki pionowo zamiast poziomo za pomocą układu przepływu
Chcę dodać pola wyboru w pionie na panelu. Jakie jest możliwe rozwiązanie?
Dodaję pola wyboru na JPanel
w FlowLayout
pola wyboru są dodawane poziomo.dodać kontrolki pionowo zamiast poziomo za pomocą układu przepływu
Chcę dodać pola wyboru w pionie na panelu. Jakie jest możliwe rozwiązanie?
Mam nadzieję, że to, co staramy się osiągnąć to w ten sposób. W tym celu użyj layoutu Box.
package com.kcing.kailas.sample.client;
import javax.swing.BoxLayout;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.WindowConstants;
public class Testing extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
/**
* This is the default constructor
*/
public Testing() {
super();
initialize();
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
this.setSize(300, 200);
this.setContentPane(getJContentPane());
this.setTitle("JFrame");
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(null);
JPanel panel = new JPanel();
panel.setBounds(61, 11, 81, 140);
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
jContentPane.add(panel);
JCheckBox c1 = new JCheckBox("Check1");
panel.add(c1);
c1 = new JCheckBox("Check2");
panel.add(c1);
c1 = new JCheckBox("Check3");
panel.add(c1);
c1 = new JCheckBox("Check4");
panel.add(c1);
}
return jContentPane;
}
public static void main(String[] args) throws Exception {
Testing frame = new Testing();
frame.setVisible(true);
frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
}
}
'UIManager.setLookAndFeel (" com.sun.java.swing.plaf.windows.WindowsLookAndFeel ");' Ughh .. który wyglądałby okropnie na OS X & * nix, choć na szczęście nie udałoby się całkowicie w każdym systemie. Zamiast tego zobacz ['UIManager.getSystemLookAndFeelClassName()'] (http://docs.oracle.com/javase/7/docs/api/javax/swing/UIManager.html#getSystemLookAndFeelClassName%28%29). –
Dzięki za komentarz Andrew Thompson. Usuwam to. –
... a podstawowe podejście (użyj BoxLayout) różni się od wcześniejszej odpowiedzi @AbstractChaos w tym ..? Poza tym, że jest gorzej: układ null w treści? ręczne wymiarowanie/pozycjonowanie panelu? nononono, nie rób tego. A co ma osiągnąć updateComponentTreeUI tutaj? – kleopatra
Jak napisałem w komentarzu, użyłbym do tego układu skrzynki.
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout());
JButton button = new JButton("Button1");
button.setAlignmentX(Component.CENTER_ALIGNMENT);
panel.add(button);
button = new JButton("Button2");
button.setAlignmentX(Component.CENTER_ALIGNMENT);
panel.add(button);
button = new JButton("Button3");
button.setAlignmentX(Component.CENTER_ALIGNMENT);
panel.add(button);
add(panel);
ten nie kompiluje –
użyłem BoxLayout
i ustawić jej drugi parametr jako BoxLayout.Y_AXIS
i pracował dla mnie:
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
+1 za dodanie słowa "BoxLayout.Y_AXIS". – ArtOfWarfare
tak, ta praca również dla mnie. –
Jak mogę wyrównać pojedynczy element w prawo i czy wszystkie pozostałe są wyśrodkowane? –
JPanel testPanel = new JPanel();
testPanel.setLayout(new BoxLayout(testPanel, BoxLayout.Y_AXIS));
/*add variables here and add them to testPanel
e,g`enter code here`
testPanel.add(nameLabel);
testPanel.add(textName);
*/
testPanel.setVisible(true);
FlowLayout robi to, co sugeruje, elementy płynących od lewej do prawej, dopóki nie ma miejsca a następnie przechodzi do następnej linii, z różnymi układami możesz zrobić to, czego potrzebujesz. – AbstractChaos
jaki układ powinienem dla niego użyć – adesh
Sugerowałbym [BoxLayout] (http://docs.oracle.com/javase/tutorial/uiswing/layout/box.html) – AbstractChaos