java - 如何设置合适的布局

标签 java swing center grid-layout

我想将布局设置为:1 列 5 行,位于中心。 我尝试使用 GridLayout(5,0) ,但它仍然位于左侧,有什么建议如何使其居中吗?

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.JPanel;
public class TestSwingListeners1 {
        private static int cnt1;
        private static int cnt2;
        public static void main(String[] args) {
        JFrame fr1 = new JFrame("Swing Window");
        Container cp;
        JButton bt1;
        JButton bt2;
        cnt1 = 0;
        cnt2 = 0;
        final String scr = null;
        final String wnr = null;
        JButton btOK, btCancel;
        fr1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        fr1.setSize(200, 200);
        fr1.setResizable(true);
        cp = fr1.getContentPane();
        cp.setLayout(new GridLayout(5,0));
        // cp.setLayout(new BoxLayout(BoxLayout.Y_AXIS));
        btOK = new JButton("AC Milan");
        btCancel = new JButton("Real Madrid");
        final JLabel lbl1 = new JLabel("Result: " + cnt1 + "X" + cnt2);
        final JLabel lbl2 = new JLabel("Last Scorer: " + scr);
        final JLabel lbl3 = new JLabel("Winner: " + wnr);
        cp.add(btOK);
        cp.add(btCancel);
        cp.add(lbl1);
        cp.add(lbl2);
        cp.add(lbl3);
        fr1.add(cp, BorderLayout.CENTER);
        cp.setLayout(new BoxLayout(lbl1, BoxLayout.LINE_AXIS));
        //lbl1.setText(displayText);

        btOK.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent ae) {
            cnt1++; 
            lbl1.setText("Result: " + cnt1 + "X" + cnt2);
            lbl2.setText("Last Scorer: AC Milan");

            if(cnt1>cnt2){
                lbl3.setText("Winner: AC Milan");
                }
            else if(cnt1<cnt2){
                lbl3.setText("Winner: Real Madrid");
                }
            else if(cnt1 == cnt2){
                lbl3.setText("Winner: Draw");
                }
            }
        });

        btCancel.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent ae) {
            cnt2++;
            lbl1.setText("Result: " + cnt1 + "X" + cnt2);
            lbl2.setText("Last Scorer: Real Madrid");
            if(cnt1>cnt2){
                lbl3.setText("Winner: AC Milan");
                }
            else if(cnt1<cnt2){
                lbl3.setText("Winner: Real Madrid");
                }
            else if(cnt1 == cnt2){
                lbl3.setText("Winner: Draw");
                }

            }
        });
        fr1.show(); 
       }
  }

最佳答案

GridLayout grid = new GridLayout(5, 0);
cp.setLayout(grid);

...

grid.addComponent(btOK, 0, 0);
grid.setComponentAlignment(btOK, Alignment.MIDDLE_CENTER);

...

关于java - 如何设置合适的布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6774732/

相关文章:

Java Blackjack GUIpaintComponentdrawImage不显示所有纸牌

java - Jframe 顶部的 Facebook 蓝色背景

java - 如何从 JtextPane 获取样式?

html - 使用 CSS 和 HTMl 实现

java - 创建 text/html JTextPane 时的换行符

java - 拦截WebView

java - 属于同一类或继承类的包中的条目

java - Android内部类获取值的问题

delphi - 多显示器 - 在鼠标光标所在的显示器中打开应用程序窗口

iphone - 当用户位置已知或发生变化时,如何使 MKMapView map 在视觉上居中?