所以,我的JFrame
不是我想要的方式,因爲FlowLayout()
,但我不知道還有什麼可以用來解決這個問題。它只是讓我的JButton
填充整個JFrame
。有沒有辦法讓FlowLayout()
將我的自定義尺寸和位置應用於JFrame
組件,還是有替代方案可以輕鬆替代它?我應該用什麼來代替FlowLayout()?
這裏是我的代碼:
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藝術,因爲它應該以最小的尺寸出現並且(如果可調整大小)以額外的寬度/高度出現。另外,請在源代碼頂部包含導入,並在發佈之前修復任何編譯器警告。我有你的代碼版本,這樣做。你想讓我把它編輯成問題嗎? –
或者只是發佈圖片或鏈接。 – tbodt
@AndrewThompson現在做什麼?我應該截取一下它的外觀嗎? – knorberg