没有空白区域的GUI显得"拥挤".如何在不借助明确设置组件的位置或大小的情况下提供空白区域?
我不知道如何使用此代码:
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Run Code Online (Sandbox Code Playgroud)
使用x按钮关闭程序.
我们可以使用列表来初始化窗口图标Window.setIconImages(List<? extends Image>).通常用于a的图标大小有哪些JFrame?
此代码将64个不同大小的图像(从16x16,递增2)转换为列表的图标.
import java.awt.*;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.Vector;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
public class FrameIconList {
public static BufferedImage getImage(int size, Color color) {
BufferedImage i = new BufferedImage(
size, size, BufferedImage.TYPE_INT_RGB);
Graphics2D g = i.createGraphics();
g.setColor(color);
g.fillRect(0, 0, size, size);
g.setColor(Color.BLACK);
int off = (size>17 ? 3 : 1);
if (off>1) g.drawRect(0, 0, size-1, size-1);
g.drawString("" + size, off, size-off);
g.dispose();
return i;
}
public static void main(String[] args) { …Run Code Online (Sandbox Code Playgroud) 我将如何制作这款可调整大小的Chess GUI?
我们公司的任务是制作国际象棋游戏.它需要在Windows,OS X和Linux/Unix机器上工作,我们选择Java来实现这一点,同时保持一个通用的代码库(便于维护和降低成本).
我的任务是创建GUI.用户设计团队已经清除了以下规范.与客户.
国际象棋比赛(国际象棋冠军)将有力量调整大小和直接,它包括:
- 顶部的工具栏,带有UI组件:
- New 按键
- Save 按键
- Restore 按键
- Resign 按键
- 用于向玩家提供消息的标签.
在游戏的左侧,我们需要一个保留供将来使用的区域,它可能包括以下内容:
- 捕获的碎片列表
- 促销典当时选择件的选择器
- 游戏统计
- 提示等
客户和逻辑团队仍在解决这方面的细节.因此,暂时只需使用包含
?文本的标签进行标记即可.GUI的其余部分将由棋盘本身组成.它将有:
- 国际象棋棋盘的主要区域.如果用户指向棋子,它应该显示带边框的焦点.它也应该是键盘可访问的.客户将提供多个棋子(各种尺寸,样式和颜色)的精灵表,以允许用户改变游戏的外观.
- 棋盘将有标签指示列(从左到右:A,B,C,D,E,F,G和H)和行(从上到下:8,7,6,5,4,3,2) &1).
- 国际象棋棋盘和列/行标签将以1px黑色边框为边界,周围有8px填充.
- 随着玩家增加游戏的大小,棋盘应保持正方形,否则填充可用空间.
- 国际象棋棋盘后面的背景颜色应该是赭色,但在下面的模型中,我们将棋盘背后的区域设为绿色,以突出调整大小的行为.




我有一个(有点哲学)问题相对于Swing,或者一般的GUI编程.是否有关于在何处定位JFrame应用程序中使用的实例的公认最佳实践?
setLocationRelativeTo(null))?JFrame找到?相对于它的父母JFrame,在屏幕的中心,我们想要的任何地方?我一直认为有一些最好的做法,有点像这样的"GUI圣经",我错了,我应该(喘气)任意决定做什么?
有谁知道如何使jbutton关闭gui?我认为这样System.CLOSE(0);但是没有用.它也可能exitActionPerformed(evt);,但这也不起作用.只需要代码行就可以了.
编辑:别介意的人.答案是System.exit(0);.谢谢你的帮助!
我一直试图JDesktopPane通过可调整大小的GUI和滚动窗格来很好地工作,但是我遇到了一些麻烦.似乎除非拖动模式是大纲,否则桌面窗格将不会按预期调整大小(当内部框架被拖动超出桌面窗格的边缘时),因此不会产生滚动条.

我在这个来源做一些非常愚蠢的事吗?我错过了一个更好的方法吗?
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
public class MDIPreferredSize {
public static void main(String[] args) {
Runnable r = new Runnable() {
@Override
public void run() {
final JDesktopPane dt = new JDesktopPane() {
@Override
public Dimension getPreferredSize() {
Dimension prefSize = super.getPreferredSize();
System.out.println("prefSize: " + prefSize);
// inititialize the max to the first normalized bounds
Rectangle max = getAllFrames()[0].getNormalBounds();
for (JInternalFrame jif : this.getAllFrames()) {
max.add(jif.getNormalBounds());
}
System.out.println("maxBounds(): "
+ max); …Run Code Online (Sandbox Code Playgroud) 何时计算JComponent的大小?在屏幕上显示之后或之前?如果我.getSize()之前发送消息.setVisible(true),它会给我正确答案吗?谢谢
我试图让我的JTextField填充宽度并为其设置高度但仍然失败.我尝试添加代码setPreferredSize(new Dimension(320,200));但仍然失败.有什么方法可以让我的JTextField填充宽度并将高度设置为200或其他什么?
对于学校,我必须在一个按钮和两个文本区域内制作一个JFrame.无论你在Textfield中放置什么,当按下按钮时,必须进入文本字段2.当我运行程序时,我得到了代码,我应该看到textfields和按钮.无论出于何种原因,它都没有.
我到目前为止:
package helloworld;
import javax.swing.*;
import java.awt.event.*;
public class HelloWorld extends JFrame {
public static void main(String[] args) {
JFrame frame = new HelloWorld();
frame.setSize(400, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("Hello World Button App");
JPanel panel = new JPanel();
frame.setContentPane(panel);
fram.setVisible(true);
}
}
class panel extends JPanel {
public JButton btn1 = new JButton("Klick!");
public JTextField txt1 = new JTextField(10);
public JTextField txt2 = new JTextField(10);
public panel() {
add(btn1);
add(txt1);
add(txt2);
}
}
Run Code Online (Sandbox Code Playgroud)
我还不能发布图片,但我会在这里提供图片的链接
如果这个问题已经出现,我很抱歉,但我找不到类似的问题.我是编程的新手,所以当我忘记某些内容或写错了内容时,请不要对我大喊大叫!
java ×10
swing ×9
jframe ×3
icons ×1
imageicon ×1
jbutton ×1
jcomponent ×1
jcreator ×1
jdesktoppane ×1
jpanel ×1
jscrollpane ×1
jtextfield ×1
netbeans ×1
whitespace ×1