【发布时间】:2013-07-22 20:31:09
【问题描述】:
所以,由于FlowLayout(),我的JFrame 并没有达到我想要的效果,但我不知道还有什么可以解决这个问题。它只会让我的JButton 填满整个JFrame。有没有办法让FlowLayout() 为JFrame 组件应用我的自定义尺寸和位置,或者是否有替代方案可以轻松替换它?
这是我的代码:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MTGSAMPServerReference extends JFrame implements ActionListener {
public static Toolkit tk = Toolkit.getDefaultToolkit();
static int ScrnWidth = ((int) tk.getScreenSize().getWidth());
static int ScrnHeight = ((int) tk.getScreenSize().getHeight());
private static final long serialVersionUID = 1L;
private static JList list1;
private static JButton next;
public MTGSAMPServerReference() {
// set flow layout for the frame
this.getContentPane().setLayout(new FlowLayout());
Object[] data1 = { "Value 1", "Value 2", "Value 3", "Value 4", "Value 5" };
list1 = new JList<Object>(data1);
next = new JButton("Next");
next.addActionListener(this);
// add list to frame
add(list1);
add(next);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("Next")) {
int index = list1.getSelectedIndex();
System.out.println("Index Selected: " + index);
String s = (String) list1.getSelectedValue();
System.out.println("Value Selected: " + s);
}
}
private static void createAndShowGUI() {
//Create and set up the window.
JFrame f = new MTGSAMPServerReference();
//Display the window.
f.pack();
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(1200, 800);
f.setLocationRelativeTo(null);
list1.setSize(250, 250);
list1.setLocation(0, 0);
next.setSize(75, 25);
next.setLocation(251, 276);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
有什么想法吗?
提前致谢!
编辑:这是问题的图片。
编辑:这是我希望它看起来的样子(大约):
【问题讨论】:
-
“它只会让我的 JButton 填满整个 JFrame” 不在这里它没有。提供 GUI 的 ASCII 艺术,因为它应该以最小的尺寸出现,并且(如果可调整大小)具有额外的宽度/高度。此外,请在源代码顶部包含导入,并在发布之前修复任何编译器警告。我有一个版本的代码可以做到这一点。你想让我把它编辑成问题吗?
-
或者只是张贴图片或链接。
-
@AndrewThompson 现在做什么?我应该截个图看看它的样子吗?
-
“现在做什么?” 我有一个包含导入和修复警告的代码版本! “我应该只截一张它的样子吗?”我认为这不会有太大帮助,因为我的结果与你的不同。
-
忘记确切的位置。粗略地勾勒出您希望组件的位置和方式,我们可以使用布局管理器帮助您完成。这并不意味着居中,除非您愿意。
标签: java swing jframe flowlayout contentpane