如何组织Java布局?

时间:2021-02-19 14:43:49

标签: java layout

如何制作一排按钮并将这个“地牢攻击”标志放在按钮上方? 有什么办法可以专门在屏幕上分配一些东西吗?或者有什么东西可以对齐我的组件?我是 Java 界面这部分的新手

FonteEstilizada 只是一个为我设计字体的类,而 BotaoEstilizado 只为我的按钮设计风格

enter image description here

到目前为止我的代码:

package atol;

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.TextArea;
import java.awt.Toolkit;
import java.net.URL;
import javax.swing.BoxLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.border.EmptyBorder;
import looks.and.feels.BotaoEstilizado;

public class TestesInterface extends JPanel {

    private Image image;

    TestesInterface(Image image) {
        this.image = image;
    }

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawImage(image,0,0,getWidth(),getHeight(),this);
    }

    public static void run(String endereco) {
  
        final Image image = new ImageIcon(endereco).getImage();
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JFrame f = new JFrame("Image");
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.setLocationByPlatform(true);

                TestesInterface imagePanel = new TestesInterface(image);
                imagePanel.setLayout(new GridLayout(5,10,10,10));
                imagePanel.setBorder(new EmptyBorder(20,20,20,20));   
      
                Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
                // get 2/3 of the height, and 2/3 of the width
                int height = screenSize.height * 2 / 3;
                int width = screenSize.width * 2 / 3;
                
                JButton startButton = new JButton("Start");
                startButton.setUI(new BotaoEstilizado());
          
                JLabel logo = new JLabel("Dungeons Attack");
                logo.setForeground(Color.yellow);
                logo.setPreferredSize(new Dimension(100,50));
                
                startButton.setPreferredSize(new Dimension(100,50));
                imagePanel.setLayout( new GridBagLayout());
                imagePanel.add(startButton);
                imagePanel.add(logo);
               
                
               

                // set the jframe height and width
                f.setPreferredSize(new Dimension(width, height));
                f.setContentPane(imagePanel);
                f.pack();
                f.setVisible(true);
            }
        });
    }
    /**
     * Creates new form TestesInterface
     */
    public TestesInterface() {
        initComponents();
    }

    @SuppressWarnings("unchecked")                      
    private void initComponents() {

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 400, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 300, Short.MAX_VALUE)
        );
    }                    

            
}

0 个答案:

没有答案