lz ?你好
為岱岳等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及岱岳網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都做網(wǎng)站、網(wǎng)站建設(shè)、岱岳網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
這個很好實(shí)現(xiàn)的 ?就用繪圖機(jī)制繪制一下就行了 ?繪制文字和橫線
代碼如下:
import javax.swing.*;
import java.awt.*;
public class StringLine extends JFrame{
private MyPanel mp;
public StringLine(){
super("StringLine");
mp = new MyPanel();
getContentPane().add(mp);
setLocation(200,100);
setSize(100,100);
setVisible(true);
setResizable(false);
setDefaultCloseOperation(3);
}
public static void main (String[] args) {
new StringLine();
}
}
//自定義面板類
class MyPanel extends JPanel{
//重寫paintComponent方法
public void paintComponent(Graphics g){
g.drawString("價格 : 2.00元", 5,10);//繪制文字
g.drawLine(5,5,75,5);//繪制橫線
}
}
用java繪制弧形文字的方法是調(diào)用java 2d圖形處理的api實(shí)現(xiàn)的。
完整代碼如下:
// 引入需要的jar包
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
//定義一個類
public class FontPanel extends JPanel {
//定義一個畫板,入?yún)⑹菆D形g
public void paintComponent(Graphics g) {
super.paintComponent(g);
Font f = new Font("SansSerif", Font.BOLD, 14); 設(shè)置字體加粗
Font fi = new Font("SansSerif", Font.BOLD + Font.ITALIC, 14);設(shè)置字體加粗,斜體
FontMetrics fm = g.getFontMetrics(f); //得到當(dāng)前的font metrics
FontMetrics fim = g.getFontMetrics(fi);//得到當(dāng)前的font metrics
String s1 = "Java ";
String s2 = "Source and Support"; 定義字符串
String s3 = " java 字體變形學(xué)習(xí)";
int width1 = fm.stringWidth(s1); 設(shè)置寬度
int width2 = fim.stringWidth(s2);
int width3 = fm.stringWidth(s3);
Dimension d = getSize(); 設(shè)置二維圖形的維度
int cx = (d.width - width1 - width2 - width3) / 2; 計算繪制字體的x軸
int cy = (d.height - fm.getHeight()) / 2 + fm.getAscent();計算繪制字體的y軸
g.setFont(f);
g.drawString(s1, cx, cy);
cx += width1;
g.setFont(fi);
g.drawString(s2, cx, cy);
cx += width2;
g.setFont(f);
g.drawString(s3, cx, cy);
}
main方法測試:
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setTitle("NotHelloWorld2");
frame.setSize(350, 200);
frame.addWindowListener(new WindowAdapter() {
?public void windowClosing(WindowEvent e) {
? ?System.exit(0);
?}
});
Container contentPane = frame.getContentPane();
contentPane.add(new FontPanel());
frame.show();
}
}
運(yùn)行結(jié)果:
用java繪制弧形文字的方法是調(diào)用java 貳d圖形處理的api實(shí)現(xiàn)的。 完整代碼如下: // 引入需要的jar包 import java.awt.Container; import java.awt.Dimension; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JFrame; import javax.swing.JPanel; //定義一個類 public class FontPanel extends JPanel { //定義一個畫板,入?yún)⑹菆D形g ?public void paintComponent(Graphics g) { ? ?super.paintComponent(g); ? ?Font f = new Font("SansSerif", Font.BOLD, 依四); 設(shè)置字體加粗 ? ?Font fi = new Font("SansSerif", Font.BOLD + Font.ITALIC, 依四);設(shè)置字體加粗,斜體 ? ?FontMetrics fm = g.getFontMetrics(f); //得到當(dāng)前的font metrics ? ?FontMetrics fim = g.getFontMetrics(fi);//得到當(dāng)前的font metrics ? ?String s依 = "Java "; ? ?String s貳 = "Source and Support"; 定義字符串 ? ?String s三 = " java 字體變形學(xué)習(xí)"; ? ?int width依 = fm.stringWidth(s依); 設(shè)置寬度 ? ?int width貳 = fim.stringWidth(s貳); ? ?int width三 = fm.stringWidth(s三); ? ?Dimension d = getSize(); 設(shè)置二維圖形的維度 ? ?int cx = (d.width - width依 - width貳 - width三) / 貳; 計算繪制字體的x軸 ? ?int cy = (d.height - fm.getHeight()) / 貳 + fm.getAscent();計算繪制字體的y軸 ? ?g.setFont(f); ? ?g.drawString(s依, cx, cy); ? ?cx += width依; ? ?g.setFont(fi); ? ?g.drawString(s貳, cx, cy); ? ?cx += width貳; ? ?g.setFont(f); ? ?g.drawString(s三, cx, cy); ?} main方法測試: ?public static void main(String[] args) { ? ?JFrame frame = new JFrame(); ? ?frame.setTitle("NotHelloWorld貳"); ? ?frame.setSize(三50, 貳00); ? ?frame.addWindowListener(new WindowAdapter() { ? ? ?public void windowClosing(WindowEvent e) { ? ? ? ?System.exit(0); ? ? ?} ? ?}); ? ?Container contentPane = frame.getContentPane(); ? ?contentPane.add(new FontPanel()); ? ?frame.show(); ?} } 運(yùn)行結(jié)果
可使使用界面來解決的
javatable
1 /**
工具欄
JToolBar
采用從左開始的
FlowLayout
布局
*/
2 JToolBar toolBar = new JToolBar();
3 toolBar.setBorderPainted(false); //
不畫邊界
4 toolBar.setLayout(new FlowLayout(FlowLayout.LEFT));
5
6 /**
窗體采用動態(tài)的
BorderLayout
布局,通過獲取工具欄或狀態(tài)欄的復(fù)選標(biāo)記
進(jìn)行界面的動態(tài)調(diào)整
*/
7 JSplitPane splitPane = new JSplitPane();
8 splitPane.setOrientation(JSplitPane.VERTICAL_SPLIT); //
設(shè)置統(tǒng)計窗口分隔條
的方向
9 splitPane.setDividerLocation(300); //
設(shè)置分隔條的位置
10 splitPane.setOneTouchExpandable(true);
11 JCheckBoxMenuItem toolBarItem = new JCheckBoxMenuItem("
工具欄
(T)",
true);
12 JLabel statusLabel = new JLabel("
當(dāng)前統(tǒng)計目標(biāo)
:");
13 JCheckBoxMenuItem statusBarItem = new JCheckBoxMenuItem("
狀態(tài)欄
(S)",
true);
14 /**
設(shè)置系統(tǒng)窗體布局并動態(tài)設(shè)置工具欄和狀態(tài)欄
*/
15 private void setLayout()
16 {
5
17 if (toolBarItem.getState() ' statusBarItem.getState())
18 {
19 this.getContentPane().add(BorderLayout.NORTH, toolBar);
20 this.getContentPane().add(BorderLayout.CENTER, splitPane);
21 this.getContentPane().add(BorderLayout.SOUTH, statusLabel);
22 }
23 else if (toolBarItem.getState() !statusBarItem.getState())
24 {
25 this.getContentPane().add(BorderLayout.NORTH, toolBar);
26 this.getContentPane().remove(statusLabel);
27 }
28 else if (statusBarItem.getState() !toolBarItem.getState())
29 {
30 this.getContentPane().add(BorderLayout.SOUTH, statusLabel);
31 this.getContentPane().remove(toolBar);
32 }
33 else if (!toolBarItem.getState() !statusBarItem.getState())
34 {
35 this.getContentPane().remove(toolBar);
36 this.getContentPane().remove(statusLabel);
37 }
38 this.show(); //
添加或移去組件后刷新界面
39 }