當前位置:編程學習大全網 - 行動軟體 - 我想知道如何用java swing設計我想要的這樣的壹個界面?望抽空幫助,萬分感謝!

我想知道如何用java swing設計我想要的這樣的壹個界面?望抽空幫助,萬分感謝!

效果圖

思路:

JTabbedPane ?提供了壹個setUI方法,來修改JTabbedPane 的界面和外觀

然後我們可以繼承BasicTabbedPaneUI 重寫裏面的部分繪制方法來修改外觀

參考代碼

import?java.awt.*;

import?java.awt.event.*;

import?javax.swing.*;

import?javax.swing.plaf.ComponentUI;

import?javax.swing.plaf.basic.BasicTabbedPaneUI;

public?class?SwingDemo?extends?JFrame?implements?ActionListener?{

JButton?jb;

JPanel?jp3;

public?SwingDemo()?{

JTabbedPane?jtpTotal?=?new?JTabbedPane();//橫向的JTabbedPane?,模塊壹,模塊二...

JTabbedPane?jtpa?=?new?JTabbedPane();//模塊壹,對應的是jtpa

jtpa.setTabPlacement(JTabbedPane.LEFT);//設置標簽在縱向

JPanel?jp1?=?new?JPanel(new?BorderLayout());//新建壹個JPanel,布局為邊界布局

JTextArea?jta?=?new?JTextArea();//文本域

jta.append("人生若只如初見,何事秋風悲畫扇.");//文本域的內容

jta.setFont(new?Font("宋體",Font.BOLD,?25));//文本域的文字

jp1.add(jta);

JPanel?jp2?=?new?JPanel();

JLabel?jl?=?new?JLabel("PI=3.1415926");

jl.setFont(new?Font("隸書",Font.BOLD,?20));

jl.setForeground(Color.RED);//設置jl的文字顏色

jp2.add(jl);

//為了方便響應事件,把jb,和jp3的定義放到了頂上

jp3?=?new?JPanel();

jb?=?new?JButton("點擊按鈕修改本頁的背景色");

jb.addActionListener(this);//添加事件響應

jp3.add(jb);

jtpa.add("選項壹",?jp1);

jtpa.add("選項二",?jp2);

jtpa.add("選項三",?jp3);

JPanel?jpA?=?new?JPanel(new?BorderLayout());

jpA.add(jtpa);

//把jtpa的所有選項的標簽的背景色設置為白色

for?(int?i?=?0;?i?<?jtpa.getTabCount();?i++)?{

jtpa.setBackgroundAt(i,?Color.WHITE);

}

jtpa.setUI(new?TPUI());

jtpTotal.add("模塊壹",?jpA);

//下面的jtpb和jtpc沒有添加組件,也沒有設置顏色,?但是結構看起來比較直觀

JTabbedPane?jtpb?=?new?JTabbedPane();

jtpb.setTabPlacement(JTabbedPane.LEFT);

JPanel?jp4?=?new?JPanel();

JPanel?jp5?=?new?JPanel();

JPanel?jp6?=?new?JPanel();

jtpb.add("選項四",?jp4);

jtpb.add("選項五",?jp5);

jtpb.add("選項六",?jp6);

JPanel?jpB?=?new?JPanel(new?BorderLayout());

jpB.add(jtpb);

jtpTotal.add("模塊二",?jpB);

JTabbedPane?jtpc?=?new?JTabbedPane();

jtpc.setTabPlacement(JTabbedPane.LEFT);

JPanel?jp7?=?new?JPanel();

JPanel?jp8?=?new?JPanel();

JPanel?jp9?=?new?JPanel();

jtpc.add("選項七",?jp7);

jtpc.add("選項八",?jp8);

jtpc.add("選項九",?jp9);

JPanel?jpC?=?new?JPanel(new?BorderLayout());

jpC.add(jtpc);

jtpTotal.add("模塊三",?jpC);

add(jtpTotal);

setTitle("主窗口");//?標題

setSize(620,?480);//?大小

setLocationRelativeTo(null);//?居中

setDefaultCloseOperation(EXIT_ON_CLOSE);//?關閉窗口後退出程序

setVisible(true);//?窗口可見

}

public?static?void?main(String[]?args)?{

new?SwingDemo();

}

@Override

public?void?actionPerformed(ActionEvent?e)?{//點擊修改jp3的顏色

if(e.getSource()==jb){//如果是jb按鈕被點擊

jp3.setBackground(new?Color(getInt(),getInt(),getInt()));//那麽修改jp3的背景色

}

}

public?int?getInt(){//隨機產生0~255之間的數字,用於生成隨機顏色r,g,b

return?(int)?(Math.random()*256);

}

}

//註意,此類用於修改外觀JTabbedPane

class?TPUI?extends?BasicTabbedPaneUI?{

public?static?ComponentUI?createUI(JComponent?c)?{

return?new?TPUI();

}

@Override

protected?void?paintTabBorder(Graphics?g,?int?tabPlacement,?int?tabIndex,?int?x,?int?y,?int?w,?int?h,

boolean?isSelected)?{

if?(isSelected)?{//如果該標簽被選中,?那麽繪制矩形

g.setColor(new?Color(116,?168,?231));

g.fillRect(x?+?w?-?10,?y,?x+w,?h);

}else{//沒有被選中時的邊框,?也可以不用繪制

g.setColor(new?Color(116,?168,?231));

g.drawRect(x?+?w?-?8,?y,?x+w,?h);

}

}

@Override

protected?void?paintTabBackground(Graphics?g,?int?tabPlacement,?int?tabIndex,?int?x,?int?y,?int?w,?int?h,

boolean?isSelected)?{

g.setColor(Color.RED);

super.paintTabBackground(g,?tabPlacement,?tabIndex,?x,?y,?w,?h,?false);

//?最後壹個參數?true繪制背景色.false不繪制

//?如果參數是isSelected?,那麽選中就繪制背景色,不選中就不繪制

}

}

  • 上一篇:半圓的面積公式是什麽?
  • 下一篇:清吧是什麽
  • copyright 2024編程學習大全網