什么Java JPanel布局允许中心、侧面和角点元素?
我有以下GUI代码:什么Java JPanel布局允许中心、侧面和角点元素?,java,swing,jpanel,Java,Swing,Jpanel,我有以下GUI代码: package rubiksCube; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class SimpleGui extends JFrame{ int[] px2; int[] py2; int[] pz2; Graphics g2 = null; int sN;
package rubiksCube;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class SimpleGui extends JFrame{
int[] px2;
int[] py2;
int[] pz2;
Graphics g2 = null;
int sN;
public SimpleGui(){
JButton solve = new JButton();
JPanel p = new JPanel();
solve.setText("Solve");
solve.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
Control c = new Control();
c.solve();
}});
solve.addKeyListener(new KeyListener(){
public void keyPressed(KeyEvent k) {
switch (k.getKeyCode()){
case KeyEvent.VK_DOWN:
break;
case KeyEvent.VK_UP:
break;
case KeyEvent.VK_LEFT:
break;
case KeyEvent.VK_RIGHT:
break;
case KeyEvent.VK_0:
break;
case KeyEvent.VK_1:
break;
case KeyEvent.VK_2:
break;
case KeyEvent.VK_3:
break;
case KeyEvent.VK_4:
break;
case KeyEvent.VK_5:
break;
case KeyEvent.VK_6:
break;
case KeyEvent.VK_7:
break;
case KeyEvent.VK_8:
break;
case KeyEvent.VK_9:
break;
case KeyEvent.VK_MINUS:
break;
case KeyEvent.VK_EQUALS:
break;
}
}
public void keyReleased(KeyEvent k) {
}
public void keyTyped(KeyEvent k) {
}
});
JButton random = new JButton();
random.setText("Randomize");
random.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
Control c = new Control();
c.random();
}});
p.setVisible(true);
solve.setVisible(true);
p.add(solve);
p.add(random);
p.add(new Display());
add(p);
setContentPane(p);
setVisible(true);
}}
现在我希望组件(new DePosiy())显示在屏幕中间,而JButtons解决方案和随机出现在右上角。如果您想知道,new Display()是一个扩展JPanel并显示图形的类。
BorderLayout
将为您提供基本要求(中间和右侧),但如果您有多个按钮,则可能需要使用类似于GridBagLayout
的内容来完成第二个要求,但是FlowLayout
可能也能实现它
更新了一个示例
这是一个简单的概念证明示例
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class SimpleGui {
public static void main(String[] args) {
new SimpleGui();
}
public SimpleGui() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}
JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new TestPane());
JButton btn = new JButton("Solve");
JPanel right = new JPanel();
right.add(btn);
frame.add(right, BorderLayout.EAST);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
public class TestPane extends JPanel {
public TestPane() {
setBackground(Color.BLUE);
}
@Override
public Dimension getPreferredSize() {
return new Dimension(200, 200);
}
}
}
我会用两个布局管理器
JPanel outerPanel = new JPanel();
outerPanel.setLayout(new BorderLayout());
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
outerPanel.add(buttonPanel, BorderLayout.NORTH);
buttonPanel.add(solve);
buttonPanel.add(random);
outerPanel.add(new Display(), BorderLayout.CENTER);
类似这样的内容,我没有编译它,但你应该明白了。谢谢,还有1,你知道如何设置这些布局,或者我可以在哪里找到它们的信息吗?你可以看看