我对 Java 图形用户界面非常缺乏经验,我只使用 Java 的 GUI 库,因为它对我目前想要实现的目标很方便。我有一个 JPanel,其中有……多个问题。
- JEditorPane 位于文本之上,使 JLabel 黯然失色。
- JPanel 周围没有出现边框。
- 当 GUI 打开时,它的大小被调整到最小。
- JEditorPane 未调整大小。
- 尝试添加网格布局不起作用。它读到我的
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: cannot add to layout: constraint must be a string (or null)
错误。 - 为新手问题欢呼:如何添加边框?
这是我的代码:
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import javax.swing.*;
import javax.activation.MimetypesFileTypeMap;
public class UpdateMechanism {
private static void showGUI() {
JFrame frame = new JFrame("The Neverhood Restoration Project");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
BufferedImage icoImage = null;
try {
icoImage = ImageIO.read(
frame.getClass().getResource("/nhood.bmp"));
} catch (IOException e) {
System.out.println(e);
}
frame.setIconImage(icoImage);
JPanel heapPanel = new JPanel();
frame.setSize(new Dimension(1024, 600));
heapPanel.setBackground(new Color(0xA64343));
JLabel headerLabel = new JLabel("The Neverhood Restoration Project");
headerLabel.setHorizontalTextPosition(JLabel.CENTER);
try {
Font sFont = Font.createFont(Font.TRUETYPE_FONT, new File("DUGFB___.TTF"));
sFont = sFont.deriveFont(Font.PLAIN, 48);
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
ge.registerFont(sFont);
headerLabel.setFont(sFont);
} catch (FontFormatException|IOException e) {
System.out.println(e);
}
JEditorPane updateLog = new JEditorPane();
updateLog.setSize(800, Short.MAX_VALUE);
JScrollPane scrollPane = new JScrollPane(updateLog);
updateLog.setEditable(false);
try {
updateLog.setPage("http://theneverhood.sourceforge.net/");
} catch (IOException e) {
updateLog.setContentType("text/html");
updateLog.setText("<html>The application could not load the webpage.</html>");
}
frame.add(headerLabel);
frame.add(scrollPane);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
showGUI();
}
});
}
}