如何制作一排按钮并将这个“地牢攻击”标志放在按钮上方? 有什么办法可以专门在屏幕上分配一些东西吗?或者有什么东西可以对齐我的组件?我是 Java 界面这部分的新手
FonteEstilizada 只是一个为我设计字体的类,而 BotaoEstilizado 只为我的按钮设计风格
到目前为止我的代码:
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)
);
}
}