-1

では、その日の別の質問です。上部にロゴがあり、中央に 3 つではなく 4 つの列がある BorderLayout が必要です。BorderLayout マネージャーを編集する方法はありますか、それとも自分で作成する必要がありますか? (そして、自分で作る必要がある場合、自分で作ったことがないので、どこから始めればよいでしょうか?)

現時点で私のコードには、テキストやそのような派手なものはまだ追加されていません (画像を追加しようとしましたが、何らかの奇妙な理由で機能していません。うまくいけば、それを理解するでしょう.)

   public static void createGUI(){
  JFrame programFrame = new JFrame("Warlords Organizer");
  programFrame.setLayout(new BorderLayout());

  Icon backgroundIcon = new ImageIcon(IMAGE_PATH);
  JLabel contentLabel = new JLabel(backgroundIcon);
  contentLabel.setLayout(new BorderLayout());

  File imageFile = new File(IMAGE_PATH);
  File imageFile2 = new File(IMAGE_PATH2);

  //Warlords Logo JLabel
  Icon logoIcon = new ImageIcon(IMAGE_PATH2);
  JLabel warlordsLogo = new JLabel(logoIcon);
  warlordsLogo.setLayout(new BorderLayout());

  //JFrame programFrame Constructors
  programFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  programFrame.setContentPane(contentLabel);
  programFrame.pack();
  programFrame.setVisible(true);
  programFrame.setResizable(false);
} // public static void createGUI() Closing

(ロゴの問題はファイルパスではありません。投稿していないコードで参照されているためです。)

ええ、一度に 2 つの質問があります。ロゴの何が間違っていたのですか? そして、レイアウトを編集 (または作成) して、上部 (BorderLayout PAGE_START など) に合わせて、中央に 4 列を配置するにはどうすればよいですか?

編集: 助けてくれるのに十分な情報がなかった場合は申し訳ありませんが、他にどのようなコードを提供できたかはわかりません。私はこれで行くことにしました、私はそれがうまくいくことを願っています -

   //Makes the Initial BorderLayout
  JPanel allContent = new JPanel();
  allContent.setLayout(new BorderLayout());

  //New JPanel for GridLayout 
  JPanel fourRows = new JPanel(new GridLayout(0,4));
  fourRows.setLayout(new GridLayout());

  allContent.add(warlordsLogo, BorderLayout.NORTH);
  allContent.add(fourRows, BorderLayout.CENTER);

JPanel fourRows にレイアウトを配置してから fourRows.setLayout を実行するのは冗長だと確信しています。

私の最終的な意図は、上部にロゴを配置し、中央にパネルとボタンを追加できる 4 つの列を配置することです。ここにあるように、最終的に何行になるかわからないため、(0,4)を使用しました- https://stackoverflow.com/a/5657131/1676781

コードを修正するためにできることはありますか? (ここにあります) -

import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.*;

public class MainFrame {


//Image Paths
private static final String IMAGE_PATH = "imageFolder/warlordsOrganizerBackground.png";
private static final String IMAGE_PATH2 = "imageFolder/warlordsLogo.png";

//Making the parts for the GUI
public static void createGUI(){
  JFrame programFrame = new JFrame("Warlords Organizer");
  programFrame.setLayout(new BorderLayout());

  Icon backgroundIcon = new ImageIcon(IMAGE_PATH);
  JLabel contentLabel = new JLabel(backgroundIcon);

  File imageFile = new File(IMAGE_PATH);
  File imageFile2 = new File(IMAGE_PATH2);

  //Warlords Logo JLabel
  Icon logoIcon = new ImageIcon(IMAGE_PATH2);
  JLabel warlordsLogo = new JLabel(logoIcon);

  //Makes the Initial BorderLayout
  JPanel allContent = new JPanel();
  allContent.setLayout(new BorderLayout());

  //New JPanel for GridLayout 
  JPanel fourRows = new JPanel(new GridLayout(0,4));
  fourRows.setLayout(new GridLayout());

  allContent.add(warlordsLogo, BorderLayout.NORTH);
  allContent.add(fourRows, BorderLayout.CENTER);

  //Add ScrollPane MAKE SURE TO ADD TO new JScrollPane WHERE IT NEEDS TO BE / TEXT
  JScrollPane scrollPane = new JScrollPane();
  scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
  scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

  scrollPane.setOpaque(false);
  scrollPane.getViewport().setOpaque(false);

  //JFrame programFrame Constructors
  programFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  programFrame.setContentPane(contentLabel);
  programFrame.pack();
  programFrame.setVisible(true);
  programFrame.setResizable(false);

} // public static void createGUI() Closing

public static void main(String[] args) {
  javax.swing.SwingUtilities.invokeLater(new Runnable() {
     public void run() {
        createGUI();
     } //public void run() Closing
  });
}
}
4

1 に答える 1