我目前正在研究 Java GUI 实现,对于我的下一个任务,我们将创建一个程序来模拟房屋的控制。我们几乎可以自由地按照我们喜欢的方式构建它(只要它是在 Java 中的)。我已经制定了这个模型:http: //i.imgur.com/9RtWL7b.jpg(如下所示),这就是我想要制作的。
程序样机:
下面是我目前拥有的代码,它产生了这个http://i.imgur.com/XZLiwWx.jpg(下)
下面的示例代码:
我的问题是;如何让三个按钮位于屏幕的左侧?我会以错误的方式解决这个问题吗?我觉得我下面的代码非常笨重且没有组织,我应该采取不同的方法吗?
让我知道是否需要更多信息。
import java.awt.*;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;
public class ImageTest {
public static void main(String[] args) {
ImagePanel panel = new ImagePanel("program/assets/main_bg.jpg");
TopTabButton buttonHome = new TopTabButton("home");
TopTabButton buttonSettings = new TopTabButton("settings");
TopTabButton buttonHelp = new TopTabButton("help");
panel.add(buttonHome);
panel.add(buttonSettings);
panel.add(buttonHelp);
panel.setPreferredSize(new Dimension(1000, 760));
JFrame frame = new JFrame();
frame.setBackground(new Color(53, 56, 64));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(panel);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setResizable(false);
frame.setVisible(true);
}
}
class TopTabButton extends JButton {
public TopTabButton(String buttonCode) {
setIcon(new ImageIcon("program/assets/top_tab_button_bg_" + buttonCode + "_inactive.png"));
setRolloverIcon(new ImageIcon("program/assets/top_tab_button_bg_" + buttonCode + "_active.png"));
setBorderPainted(false);
setFocusPainted(false);
setContentAreaFilled(true);
setSize(new Dimension(126, 75));
}
}
class ImagePanel extends JPanel {
private Image img;
public ImagePanel(String img) {
this(Toolkit.getDefaultToolkit().createImage(img));
}
public ImagePanel(Image img) {
this.img = img;
Dimension size = new Dimension(img.getWidth(null), img.getHeight(null));
setPreferredSize(size);
setMinimumSize(size);
setMaximumSize(size);
setSize(size);
setLayout(new GridBagLayout());
}
public void paintComponent(Graphics g) {
g.drawImage(img, 0, 0, getWidth(), getHeight(), this);
}
}
class ButtonPanelTest extends JPanel {
private Image img;
public ButtonPanelTest(String name) {
Button Button1 = new Button(name);
Dimension size = new Dimension(100, 50);
setSize(size);
setLayout(new GridBagLayout());
}
}