2016-08-02 13 views
-1

私は、Javaで基本的なGUIを作成することでちょっとした作業をしました。非常に簡単に、私が達成しようとしているのは、与えられたフォント内のタイトルであり、その下に均等に間隔を置いて大きさが5つの異なるボタンを含むJPanelの場合、解像度が、 0.75の場合、JPanelは画面の端には触れませんが、20ピクセル離れた境界があります。私が達成したいのは、ユーザーが望む解像度で入力でき、同じ基本デザインを維持して他のデバイスと互換性があるようにすることです。JavaでGUIを作成する

GUI design

私がこれまで使ってきたコードは次のとおりです。

package prototype1; 

import java.awt.Color; 
import java.awt.Font; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.BorderFactory; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 

public class GUI { 


public static void main(String[] args){ 
    stateManager(); 
} 

static public JFrame menu = new JFrame("Menu Screen"); 
static public double modifier = 1; 
static public int width = 750; 
static public int height = 1334; 

static void stateManager(){ 

    JFrame.setDefaultLookAndFeelDecorated(true); 

    AL demo = new AL(); 
    menu.setContentPane(demo.contentPanel1()); 

    menu.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    menu.setSize((int) (width * modifier),(int) (height * modifier)); 
    System.out.println((int)(width * modifier)); 
    menu.setVisible(true); 
} 


static class AL implements ActionListener{ 
    JLabel titleLabel; 
    JButton checkStar; 
    JPanel buttonScreenMenu; 

    public JPanel contentPanel1(){ 
     JPanel totalGUI = new JPanel(); 
     totalGUI.setLayout(null); 
     totalGUI.setBackground(Color.white); 

     int x = width; 
     int y = height; 

     titleLabel = new JLabel("Select what it is you would like to do!"); 
     titleLabel.setFont(new Font("Castellar",Font.PLAIN, (int) (18 * modifier))); 
     titleLabel.setLocation(0,(int) (40 * modifier)); 
     titleLabel.setSize((int) (x * modifier),(int) (30 * modifier)); 
     titleLabel.setHorizontalAlignment(0); 
     totalGUI.add(titleLabel); 

     buttonScreenMenu = new JPanel(); 
     buttonScreenMenu.setLocation((int) (20 * modifier) , (int) (100 * modifier)); 
     buttonScreenMenu.setSize((int) ((x - 40) * modifier),(int) ((y - 120) * modifier)); 
     buttonScreenMenu.setBorder(BorderFactory.createLineBorder(Color.black)); 
     totalGUI.add(buttonScreenMenu); 

     checkStar = new JButton("Work out a Star"); 
     checkStar.setLocation((int)(20 * modifier),(int)(20 * modifier)); 
     checkStar.setSize(buttonScreenMenu.getWidth() - 40, (int) (buttonScreenMenu.getHeight()/4) - 40); 
     checkStar.setBackground(Color.white); 
     buttonScreenMenu.add(checkStar); 



     return totalGUI; 


    } 

    @Override 
    public void actionPerformed(ActionEvent e) { 
     throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
    } 
} 


} 

私はどこでも、私が望んでいた結果の近くになっていなかったように私はここに停止したが。

output GUI

どのように解決の問題を解決するために次のようにこのコードの出力に見えますか?

+1

スイングで提供されているさまざまなレイアウトマネージャを調べてください。 –

+0

私は、GUI Swing Builderを使用することを提案します。 – m0skit0

答えて

1

絶対位置を使用すると、多くの問題が発生します。 box layoutなどのレイアウトマネージャを使用することを検討することをお勧めします。これは、ノードを表示するのとまったく同じ方法です。ノード間にスペースを追加するだけです。どの方法を見ることができるかhere.

これに代えて、ユーザーがフレームの寸法を入力したい場合は、あなたがしなければならないことは、あなたのjframeの寸法を設定することだけです。すべてのものが自動的に調整されます。

+0

これまで私はこれを使ってきましたが、これはAレベルのコースワークです。レイアウトマネージャを使うのではなく、自分でコードを書くことができれば大きな違いがあるように感じますが、それが唯一の選択肢ならばそれを使用するだけです。レイアウトマネージャを使用する場合は –

+0

(1+)ですが、GridLayoutを調べる必要がありますが、これは各コンポーネントのサイズを同じにするためです。実際の例については、[レイアウトマネージャ](http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html)のSwingチュートリアルを参照してください。 – camickr

関連する問題