par*_*cer 2 java swing layout-manager gridbaglayout
我有一个JPanel包含两个JToggleButtons. 面板有GridBagLayout1 行和 2 列。按钮位于同一行,但位于不同的列中。
class UserInterfacePanel extends JPanel {
private JToggleButton startButton;
private JToggleButton stopButton;
public UserInterfacePanel() {
setup();
}
private void setup() {
setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
setupButtons();
//setupButtonsActions();
c.insets=new Insets(3,3,3,3);
c.weightx=0.5; //c.weightx=0.0;
c.weighty=0.5; //c.weighty=0.5;
c.gridx=0;
c.gridy=0;
add(startButton, c);
c.gridx=1;
c.gridy=0;
add(stopButton, c);
}
private void setupButtons() {
startButton=new JToggleButton(iconStartButton);
stopButton=new JToggleButton(iconStopButton);
}
public class UserInterface extends JFrame {
public static void main(String[] args) {
run();
}
public UserInterface() {
setup();
}
private void setup() {
width=800;
height=600;
panel=new UserInterfacePanel();
getContentPane().add(panel);
setSize(width, height);
}
public static void run() {
UserInterface gui=new UserInterface();
gui.setVisible(true);
}
}
Run Code Online (Sandbox Code Playgroud)
我希望能够控制按钮之间的间距,但改变c.gridwidth或c.weightx不给我结果。设置c.wightx为 0.0 会导致按钮彼此靠得太近,而除 0 以外的任何值都会导致它们离得太远,c.widthx=0.9并且 和之间的距离没有差异c.widthx=0.1。我究竟做错了什么?
小智 6
尝试创建一个Insets变量,int每次单击按钮时 s 都会增加。代码如下:
public class UserInterfacePanel extends JPanel {
private JToggleButton startButton;
private JToggleButton stopButton;
private int top = 3, left = 3, bottom = 3, right = 3;
private Insets i = new Insets(top, left, bottom, right);
public UserInterfacePanel() {
setup();
}
private void setup() {
setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
setupButtons();
setupButtonsActions();
c.insets = i;
c.weightx=0.5; //c.weightx=0.0;
c.weighty=0.5; //c.weighty=0.5;
c.gridx=0;
c.gridy=0;
add(startButton, c);
c.gridx=1;
c.gridy=0;
add(stopButton, c);
JButton b1 = new JButton("+1");
b1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
i = new Insets(top+1, left+1, bottom+1, right+1);
c.insets = i;
repaint();
}
});
add(b1, BorderLayout.SOUTH);
//...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5677 次 |
| 最近记录: |