好的,这可能是一个愚蠢的问题,但我是GUI和Java的新手。在我的GUI中,我已经制作了我的框架,因为没有我在哪里看到JFrame。或者我是否必须创建一个JFrame并将我拥有的所有东西都放在那里。我需要一个JFrame来做最小化屏幕,更改图标等的事情。感谢您的帮助!
private ImageIcon bgi;
private JLabel bgl;
private JButton startButton;
private JButton helpButton;
private JButton backButton;
private final Action action = new SwingAction();
public static void main(String[] args) throws MalformedURLException, IOException {
TwitterUnfollower gui = new TwitterUnfollower ();
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // when click x close program
gui.setSize(902, 305);
gui.setVisible(true);
gui.setTitle("Solid Cloud Inc - Twitter Unfolower");
}
public TwitterUnfollower() throws MalformedURLException, IOException{
bgi = new ImageIcon(getClass().getResource("tu.png"));
getContentPane().setLayout(null);
BufferedImage img = ImageIO.read(new URL("http://i1344.photobucket.com/albums/p656/SolidCloudInc/start_zpsf3781681.png"));
//ImageIcon start = new ImageIcon(getClass().getResource("start.png"));
startButton = new JButton("");
startButton.setIcon(new ImageIcon(img));
startButton.setBounds(22, 186, 114, 50);
getContentPane().add(startButton);
BufferedImage img2 = ImageIO.read(new URL("http://i1344.photobucket.com/albums/p656/SolidCloudInc/help_zpsc4fad867.png"));
helpButton = new JButton("");
helpButton.setIcon(new ImageIcon(img2));
helpButton.setBounds(192, 186, 114, 50);
getContentPane().add(helpButton);
BufferedImage img3 = ImageIO.read(new URL("http://i1344.photobucket.com/albums/p656/SolidCloudInc/back_zps9d62b65b.png"));
backButton = new JButton("");
backButton.setIcon(new ImageIcon(img3));
backButton.setBounds(105, 205, 82, 44);
backButton.setBorder(BorderFactory.createEmptyBorder());
backButton.setContentAreaFilled(false);
backButton.setVisible(false);
getContentPane().add(backButton);
bgl = new JLabel (bgi);
bgl.setBounds(0, 0, 886, 272);
getContentPane().add(bgl);
Events e = new Events();
startButton.addActionListener(e);
helpButton.addActionListener(e);
backButton.addActionListener(e);
}
}
我有一个动作监听器,我从代码中删除它以缩短它。我知道我应该避免使用null布局,但我使用的是WindowBuilder,这可能会改变。再次感谢!
答案 0 :(得分:1)
你的意思是这样的:
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class TwitterUnfollower extends JFrame {
private ImageIcon bgi;
private JLabel bgl;
private JButton startButton;
private JButton helpButton;
private JButton backButton;
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
try {
TwitterUnfollower gui = new TwitterUnfollower();
gui.setTitle("Solid Cloud Inc - Twitter Unfolower");
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // when click x close program
gui.pack();
gui.setVisible(true);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
public TwitterUnfollower() throws MalformedURLException, IOException {
bgi = new ImageIcon(ImageIO.read(new URL(
"http://content.mcfc.co.uk//~/media/Images/Home/News/Club%20news/2012/twitter%20background%20new.ashx")));
bgl = new JLabel(bgi);
bgl.setLayout(new BorderLayout());
getContentPane().setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
getContentPane().add(bgl);
BufferedImage img = ImageIO.read(new URL("http://i1344.photobucket.com/albums/p656/SolidCloudInc/start_zpsf3781681.png"));
// ImageIcon start = new ImageIcon(getClass().getResource("start.png"));
startButton = getButton(img);
BufferedImage img2 = ImageIO.read(new URL("http://i1344.photobucket.com/albums/p656/SolidCloudInc/help_zpsc4fad867.png"));
helpButton = getButton(img2);
BufferedImage img3 = ImageIO.read(new URL("http://i1344.photobucket.com/albums/p656/SolidCloudInc/back_zps9d62b65b.png"));
backButton = getButton(img3);
JPanel alignLeftPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0));
alignLeftPanel.setOpaque(false);
JPanel buttonPanel = new JPanel(new GridLayout(1, 0));
buttonPanel.setOpaque(false);
buttonPanel.add(startButton);
buttonPanel.add(helpButton);
buttonPanel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
alignLeftPanel.add(buttonPanel);
bgl.add(alignLeftPanel, BorderLayout.SOUTH);
}
private JButton getButton(BufferedImage img) {
JButton button = new JButton(new ImageIcon(img));
button.setContentAreaFilled(false);
button.setBorderPainted(false);
button.setFocusPainted(false);
return button;
}
}
重要提示:使用LayoutManager而不是使用null
布局,这只会让您遇到麻烦。
警告:photobucket返回状态503,因此我无法再测试此代码。