У меня проблема с JPanel
. Я начал создавать небольшую игру ... Я создал 2 панели в дизайне (на JFrame
). Все работало хорошо, и панели были в правильных местах. В моей игре я должен использовать 2 графических таблицы, поэтому я использую 2 панели и добавляю каждый из них набор макетов панели (new Grid Layout(10,10)
).Позиция JPanel на JFrame
После этого я запускаю проект, чтобы увидеть, как он работает, и я обнаруживаю свои панели в других местах и с другим размером. Я нашел способ, который помогает мне изменить размер, но я не могу найти способ изменить местоположение или способ дать свое собственное местоположение ...
Я попытался добавить фотографии, которые могут показать вам, что я вижу но сайт заблокирован фотографии ...
код:
public class GameFrame extends javax.swing.JFrame {
int [][]p1;
int [][]p1Attac;
int [][]p2;
int [][]p2Attac;
static int size=10;
int player;
JPanel [][]b1;
JPanel [][]b2;
int w=1100,h=900;
/**
* Creates new form GameFrame
* @param player1
* @param player2
*/
public GameFrame(int [][]player1, int [][]player2) {
initComponents();
// setSize(w, h);
setVisible(true);
// size=10;
p1=new int[size][size];
p1Attac=new int[size][size];
p2=new int[size][size];
p2Attac=new int[size][size];
b1=new JPanel[size][size];
b2=new JPanel[size][size];
init(player1, player2);
leftBoard.setBackground(Color.red);
rightBoard.setBackground(Color.blue);
GridLayout gl=new GridLayout(size, size);
leftBoard.setLayout(gl);
rightBoard.setLayout(gl);
for(int i=0;i<size;i++){
for(int j=0;j<size;j++){
b1[i][j]=new JPanel();
b1[i][j].setBorder(BorderFactory.createLineBorder(Color.black));
b1[i][j].setBackground(Color.red);
b2[i][j]=new JPanel();
b2[i][j].setBorder(BorderFactory.createLineBorder(Color.black));
b2[i][j].setBackground(Color.blue);
leftBoard.add(b1[i][j]);
rightBoard.add(b2[i][j]);
}
}
leftBoard.setPreferredSize(new Dimension(w/2-50, h/2));
rightBoard.setPreferredSize(new Dimension(w/2-50, h/2));
// leftBoard.setIgnoreRepaint(true);
// leftBoard.setLocation(0, h/5);
}
public void init(int [][]player1,int [][]player2){
for(int i=0;i<size;i++){
for(int j=0;j<size;j++){
p1[i][j]=player1[i][j];
p2[i][j]=player2[i][j];
p1Attac[i][j]=0;
p2Attac[i][j]=0;
}
}
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
leftBoard = new javax.swing.JPanel();
rightBoard = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
javax.swing.GroupLayout leftBoardLayout = new javax.swing.GroupLayout(leftBoard);
leftBoard.setLayout(leftBoardLayout);
leftBoardLayout.setHorizontalGroup(
leftBoardLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 523, Short.MAX_VALUE)
);
leftBoardLayout.setVerticalGroup(
leftBoardLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 498, Short.MAX_VALUE)
);
javax.swing.GroupLayout rightBoardLayout = new javax.swing.GroupLayout(rightBoard);
rightBoard.setLayout(rightBoardLayout);
rightBoardLayout.setHorizontalGroup(
rightBoardLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 547, Short.MAX_VALUE)
);
rightBoardLayout.setVerticalGroup(
rightBoardLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 498, Short.MAX_VALUE)
);
jLabel1.setFont(new java.awt.Font("Tahoma", 0, 36)); // NOI18N
jLabel1.setText("Enemy Attacs:");
jLabel2.setFont(new java.awt.Font("Tahoma", 0, 36)); // NOI18N
jLabel2.setText("Your Attacs:");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(57, 57, 57)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 272, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(leftBoard, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(118, 118, 118)
.addComponent(rightBoard, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addGap(193, 193, 193)
.addComponent(jLabel2)))
.addContainerGap(43, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGap(15, 15, 15)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(3, 3, 3)
.addComponent(leftBoard, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGap(22, 22, 22)
.addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(rightBoard, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(65, 65, 65))
);
pack();
}// </editor-fold>
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(GameFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(GameFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(GameFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(GameFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/*int [][]p1=new int[size][size];
int [][]p2=new int[size][size];
for(int i=0;i<size;i++)
for(int j=0;j<size;j++){
p1[i][j]=0;
p2[i][j]=0;
}
p1[0][0]=p1[1][0]=p1[2][0]=p1[3][0]=4;
p1[0][3]=p1[1][3]=p1[2][3]=3;
p1[5][3]=p1[6][3]=p1[7][3]=3;
p1[0][3]=p1[1][3]=2;*/
int [][]p1={
{4,4,4,4,0,1,0,0,0,0},
{0,0,0,0,0,0,0,1,0,0},
{3,3,3,0,3,0,0,0,0,0},
{0,0,0,0,3,0,0,0,0,0},
{2,2,0,0,3,0,0,1,0,0},
{0,0,0,0,0,1,0,0,0,0},
{0,0,0,0,0,0,0,2,2,0},
{0,0,0,5,0,0,0,0,0,0},
{0,0,0,0,0,0,5,0,2,2},
{0,0,0,0,0,0,0,0,0,0}
};
int [][]p2={
{0,1,0,0,1,0,0,2,2,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,1,0,1,0,2,2,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,5,0,0,3,0,0,2,0,0},
{0,0,0,0,3,0,0,2,0,0},
{0,0,0,0,3,0,0,0,0,0},
{0,0,0,0,0,0,4,4,4,4},
{0,3,3,3,0,0,0,0,0,0},
{0,0,0,0,0,0,5,0,0,0}
};
new GameFrame(p1, p2);
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
// new GameFrame().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JPanel leftBoard;
private javax.swing.JPanel rightBoard;
// End of variables declaration
}
@AndrewThompson Я думаю, что [это] (http://i.stack.imgur.com/TiIad.png) является предполагаемый макет. Я просто изменил вертикальные разрывы и поместил 'setVisible (true)' в конец конструктора. Я не уверен, действительно ли это предполагаемый вид, поэтому я не хотел редактировать вопрос. –